我遇到了与此相同的问题 - Azure Service Management API authentication using Azure Active Directory Oauth场景略有不同。
我正在运行一个 headless 应用程序(使用 nunit 来运行集成测试)设置,就像 http://msdn.microsoft.com/en-us/library/ee460782.aspx 中一样。获取阶段部署 URL,该 URL 是动态的。
我可以调用生产 url 并运行测试,同时以 headless 方式使用 AD 验证请求,但不能使用服务管理 api。我已向该服务的服务管理 API 授予权限,如演练中所示。
此外,我通过客户端凭据调用获取 token :
result = context.AcquireToken(
"https://management.core.windows.net/",
"{clientId}",
clientCredential, // had client id and key
new Uri("{redirectUri}"));
获取未经授权:收到的 JWT token 发生安全 token 异常。
使用的获取部署 URL 位于此处 - http://msdn.microsoft.com/en-us/library/ee460804.aspx 我仔细检查了订阅 ID、服务名称等。
尽管 token 看似有效,但有人对失败的原因有见解吗?
这是否已知与应用程序 key 一起使用?我还找不到一个例子。
最佳答案
请改用 AcquireToken(string resource, string clientId, UserCredential userCrential) 重载。这是函数designed对于 headless 应用程序。
由于服务管理 API 仅允许委派权限,因此您需要提供用户凭据(用户名和密码)而不是应用程序(客户端 ID 和 key )。
关于c# - 通过 AD Oauth 访问 Azure 服务管理 API 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26069606/