- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 azure-identity python 包获取访问 token 以访问 Azure 服务。我在 Azure AD 中完成了应用程序注册,并获得了以下 C# 代码,它按预期工作:
private static async Task<string> GetAccessToken(string aasUrl)
{
var tenantId = "<>";
var appId = "<>";
var appSecret = <>;
string authorityUrl = $"https://login.microsoftonline.com/{tenantId}";
var authContext = new AuthenticationContext(authorityUrl);
// Config for OAuth client credentials
var clientCred = new ClientCredential(appId, appSecret);
AuthenticationResult authenticationResult = await authContext.AcquireTokenAsync(aasUrl, clientCred);
//get access token
return authenticationResult.AccessToken;
}
但是当我尝试在 python 中重做 C# 时,我无法让 get_token(scode:str) 工作......我根本不知道要传递给 get_token 函数的范围。
from azure.identity import ClientSecretCredential
authority = 'https://login.microsoftonline.com'
credential = ClientSecretCredential(tenant_id, client_id, client_secret, authority=authority)
token = credential.get_token(scope:str) #scope?
当我使用 .net Microsoft.IdentityModel.Clients.ActiveDirectory 库时,我不必考虑范围。
最佳答案
When I use the .net Microsoft.IdentityModel.Clients.ActiveDirectory library I don’t have to think about scope.
其实你也想过。当您通过.net sdk使用下面的代码时,有一个aasUrl
,这相当于您需要在python sdk中指定。
AuthenticationResult authenticationResult = await authContext.AcquireTokenAsync(aasUrl, clientCred);
对于 Microsoft.IdentityModel.Clients.ActiveDirectory
,方法 AcquireTokenAsync
本质上使用 Azure AD client credential flow v1.0 endpoint获取token,所以该参数命名为 resource
,即此方法中的 resource
参数 AcquireTokenAsync(String, ClientCredential)
.
在 python sdk azure.identity
中,此方法 get_token
本质上使用 Azure AD client credential flow v2.0 endpoint为了获取 token ,当v1.0端点迁移到v2.0时,有一些变化,其中之一是资源
,它更改为scope
,请参阅此 doc 。使用scope
时,需要指定想要访问的权限,也可以使用 /.default
,那么默认情况下将请求添加到应用程序的所有权限。
因此,在您的情况下,您只需使用 scope
作为 aasUrl/.default
,例如https://management.azure.com/.default
,这取决于你自己。
token = credential.get_token("https://management.azure.com/.default")
也用我这边的代码进行了测试,效果很好。
关于Python azure-identity ClientSecretCredential,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66398527/
我正在尝试通过 azure-identity python 包获取访问 token 以访问 Azure 服务。我在 Azure AD 中完成了应用程序注册,并获得了以下 C# 代码,它按预期工作: p
我正在尝试通过 azure-identity python 包获取访问 token 以访问 Azure 服务。我在 Azure AD 中完成了应用程序注册,并获得了以下 C# 代码,它按预期工作: p
我试图收集特定租户中存在的拒绝分配列表,因此我在此处传递了所需的参数: tenant_id = arguments['tenant_id'] client_id = arguments['client
我试图收集特定租户中存在的拒绝分配列表,因此我在此处传递了所需的参数: tenant_id = arguments['tenant_id'] client_id = arguments['client
我正在尝试使用 DeviceUpdateClient (Azure.IoT.DeviceUpdate) 查询 IoT 中心的设备更新。 MS SDK Doc Hello World Example 我
我已在 Azure 中创建了应用程序注册并添加了对 Azure 存储的访问权限 (user_impersonation): 控制台应用程序使用这些包: 代码如下: var tc = new Cli
我已在 Azure 中创建了应用程序注册并添加了对 Azure 存储的访问权限 (user_impersonation): 控制台应用程序使用这些包: 代码如下: var tc = new Cli
已结束。 这个问题是 not reproducible or was caused by typos .它目前不接受答案。 此问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-to
晚上好,我对另一个人创建和发布的应用程序有疑问。该应用程序停止工作,没有人意识到应用程序注册中的 secret 已过期,因此我更新了它们。现在,如果我尝试启动该应用程序,我收到以下错误消息:未处理的异
我是一名优秀的程序员,十分优秀!