问题描述
我正在尝试编写一个命令行界面(CLI)实用程序,以针对我们的Azure订阅/ AD帐户进行身份验证。我希望它的行为与运行Azure Azure CLI(az登录)的方式相同,在运行该方法时,会弹出一个窗口,并由用户选择其帐户。然后进行身份验证,Azure将令牌返回给我的CLI应用程序,以便用户可以使用自己的身份使用该应用程序。我可以弄清楚如何使设备代码流正常运行,但是我不希望用户在运行我的CLI时必须粘贴设备代码。我希望它的工作方式与“ az”实用程序的工作方式相同,我不清楚az使用的流程。有人知道Azure az实用程序使用什么身份验证流吗?
解决方法
在您的情况下,如果您使用用户帐户登录Azure CLI,它将使用authorization code flow。
运行az login
时,您只需获取请求URL。
请求网址如下所示(实际上它使用auth code flow v1.0 endpoint,第一行中的链接用于v2.0端点):
https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46&redirect_uri=http://localhost:8400&state=c5tvdjross6a83528fx8&resource=https://management.core.windows.net/&prompt=select_account
因此,在您的方案中,如果要编写类似Azure CLI的命令行界面,只需创建一个Multi-tenant app作为公共客户端,然后使用auth代码流登录用户并获取令牌。