SCO*_*OUT 5 python azure azure-active-directory
I\xe2\x80\x99m 尝试通过 azure-identity python 包获取访问令牌以访问 Azure 服务。我在 Azure AD 中完成了应用程序注册,并获得了以下 C# 代码,它按预期工作:
\nprivate static async Task<string> GetAccessToken(string aasUrl)\n{\n var tenantId = "<>";\n var appId = "<>";\n var appSecret = <>;\n string authorityUrl = $"https://login.microsoftonline.com/{tenantId}";\n\n var authContext = new AuthenticationContext(authorityUrl);\n\n // Config for OAuth client credentials \n var clientCred = new ClientCredential(appId, appSecret);\n AuthenticationResult authenticationResult = await authContext.AcquireTokenAsync(aasUrl, clientCred);\n\n //get access token\n return authenticationResult.AccessToken;\n}\nRun Code Online (Sandbox Code Playgroud)\n但是当我尝试在 python 中重做 C# 时,我无法\xe2\x80\x99t 让 get_token(scode:str) 工作\xe2\x80\xa6我根本不知道要传递到 get_token 函数的范围。
\nfrom azure.identity import ClientSecretCredential\n\nauthority = 'https://login.microsoftonline.com'\n\ncredential = ClientSecretCredential(tenant_id, client_id, client_secret, authority=authority)\n\ntoken = credential.get_token(scope:str) #scope?\n\nRun Code Online (Sandbox Code Playgroud)\n当我使用 .net Microsoft.IdentityModel.Clients.ActiveDirectory 库时,我不需要考虑范围。
\n\n\n当我使用 .net Microsoft.IdentityModel.Clients.ActiveDirectory 库时,我不需要考虑范围。
\n
其实你也想过。当您通过 .net sdk 使用下面的代码时,有一个aasUrl,这相当于您需要在 python sdk 中指定。
AuthenticationResult authenticationResult = await authContext.AcquireTokenAsync(aasUrl, clientCred);\nRun Code Online (Sandbox Code Playgroud)\n其中Microsoft.IdentityModel.Clients.ActiveDirectory,该方法AcquireTokenAsync本质上是使用Azure AD客户端凭据流v1.0端点来获取令牌,因此该参数命名为resource,即resource该方法中的参数AcquireTokenAsync(String, ClientCredential)。
在 python sdk 中azure.identity,此方法get_token本质上使用Azure AD 客户端凭据流 v2.0 端点来获取令牌,当 v1.0 端点迁移到 v2.0 时,有一些更改,其中之一是resource,它更改为scope,请参阅此博士。使用时scope,需要指定想要访问的权限,也可以使用/.default,则默认会请求应用程序添加的所有权限。
所以在你的情况下,你只需要使用 as scope,aasUrl/.defaulteg https://management.azure.com/.default,这取决于你自己。
token = credential.get_token("https://management.azure.com/.default")\nRun Code Online (Sandbox Code Playgroud)\n也用我这边的代码进行了测试,效果很好。
\n\n| 归档时间: |
|
| 查看次数: |
13736 次 |
| 最近记录: |