2016-11-09 41 views
1

我正在嘗試使用Microsoft.Azure.Management.Resources庫來管理一些Azure資源。我已經在Azure AD註冊了應用程序,並且我已經給了它所有的許可。我把它的applicationID和祕密+ TennantId和SubscriptionId並試圖obtaion的accessToken這樣的:Azure無效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'應該存在。如果您正在以應用程序的身份訪問,請確保服務負責人在租戶中正確創建。

任何想法?

非常感謝。

+0

如果您需要檢查訪問令牌的內容以驗證聲明,則可以使用https://jwt.io/或http://jwt.calebb.net。 – RasmusW

+0

您是否偶然在新門戶中創建應用到Azure AD? http://www.cloudidentity.com/blog/2016/10/04/provision-an-app-created-on-portal-azure-com-in-your-own-tenant/ – juunas

回答

0

據我所知,Microsoft.Azure.Management.Resources.dll實現了ARM API。我們需要將角色分配給應用程序,之後我們可以使用令牌。有關如何將應用程序分配給角色的更多信息,請參閱article。此blog還具有獲取AceessToken的更多詳細步驟。 enter image description here