获取 Azure 访问令牌
Posted
技术标签:
【中文标题】获取 Azure 访问令牌【英文标题】:Obtain Azure Access Token 【发布时间】:2018-06-18 04:21:58 【问题描述】:我收到了这个讨厌的错误,我不知道我在这里做错了什么。我的代码甚至看起来与此博客上的代码非常相似,但就我而言,这不起作用。
GetAzureAccessToken
错误信息
"'authority' Uri 应该在路径中至少有一段(即 https:////...)\r\n参数名称:authority"
public static string GetAzureAccessToken(string clientId, string clientSecret)
string tenandId = "tenandId";
string loginUri = $"https://login.windows.net/";
var authCtx =
new AuthenticationContext(String.Format(CultureInfo.InvariantCulture, loginUri, tenandId));
var credential = new ClientCredential(clientId: clientId, clientSecret: clientSecret);
var result = authCtx.AcquireToken(resource: "https://management.core.windows.net/",
clientCredential: credential);
if(result == null)
throw new InvalidOperationException("Failed to aquire token");
return result.AccessToken;
【问题讨论】:
【参考方案1】:你定义的权限不对,应该是:
var authCtx = new AuthenticationContext(loginUri + tenantId);
另外,我想这并不重要,但我通常使用https://login.microsoftonline.com/tenant-id
作为权限。
【讨论】:
我的 (loginUri +tenantId) 有问题,假设我的tenandid 是“abcd2344/jskkeh234”然后 url 变为 login.microsoftonline.com/abcd2344/jskkeh234”但由于 / 请求的 uri 将是“login.microsoftonline.com/abcd2344 " 并且是错误的tenandid 租户 ID 中没有斜线。它是一个 UUID/GUID。或者,您可以使用 Azure AD 租户中经过验证的域名之一,例如租户名称.onmicrosoft.com。 奇怪...我得到了谁/让我仔细检查一下 您可以通过转到 Azure 门户 -> Azure Active Directory -> 属性来找到租户 ID 看起来我使用 serviceprincle 键作为tenandId :P 谢谢以上是关于获取 Azure 访问令牌的主要内容,如果未能解决你的问题,请参考以下文章
从 Powershell 获取 Azure Active Directory 访问令牌
尝试从 Azure AD 获取访问令牌时获取响应代码 400