Azure无效的AccessToken

时间:2016-11-09 00:00:03

标签: c# .net azure token

我正在尝试使用Microsoft.Azure.Management.Resources库来管理一些Azure资源。我在Azure AD中注册了应用程序并且我给了它所有权限。我拿了它的ApplicationId和Secret + TennantId和SubscriptionId,试图像这样获取AccessToken:

var clientCredential = new ClientCredential(_model.DeploymentDetails.CliendId, _model.DeploymentDetails.ClientSecret);    
var context = new AuthenticationContext("https://login.windows.net/"+model.DeploymentDetails.TennantId);
_accessToken = context.AcquireTokenAsync("https://management.azure.com/", clientCredential).Result.AccessToken;
_resourceManagementClient =  new ResourceManagementClient(new TokenCloudCredentials(_model.DeploymentDetails.SubscriptionId,_accessToken));

我得到了一些AccessToken。但是,当我尝试使用它时:

var x = _resourceManagementClient.ResourceGroups.List(...);

我收到此错误:

其他信息:InvalidAuthenticationToken:收到的访问令牌无效:至少有一个声明' puid'或者' altsecid'或者' oid'应该在场。如果您作为应用程序访问,请确保在租户中正确创建服务主体。

有什么想法吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

据我所知,Microsoft.Azure.Management.Resources.dll实现了ARM API。我们需要将应用程序分配给角色,之后我们可以共同使用令牌。有关如何将应用程序分配给角色的更多信息,请参阅article。这个blog还有更详细的步骤来获取AceessToken。 enter image description here