【问题标题】:Azure invalid AccessTokenAzure 无效的 AccessToken
【发布时间】:2016-11-09 00:00:03
【问题描述】:

我正在尝试使用 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”之一。如果您作为应用程序访问,请确保在租户中正确创建服务主体。

有什么想法吗?

非常感谢。

【问题讨论】:

标签: c# .net azure token


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-02-01
    • 2021-08-30
    • 1970-01-01
    • 2013-05-16
    • 2017-09-24
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多