2016-11-09 8 views
1

いくつかのAzureリソースを管理するためにMicrosoft.Azure.Management.Resourcesライブラリを使用しようとしています。私はAzure ADにアプリを登録しており、すべての許可をくれました。私はそのAPPLICATIONIDとシークレット+ TennantIdとSubscriptionIdを取り、このようAccessTokenをobtaionしようとした: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を取得します。私はこのようにそれを使用しようとすると、しかし:

追加情報:InvalidAuthenticationToken:受信したアクセストークンが有効でない:クレーム「PUID」または 'の少なくとも1

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

を私はこのエラーを取得します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

私が知る限り、ARM APIを実装しているMicrosoft.Azure.Management.Resources.dllです。アプリケーションをロールに割り当てる必要があります。その後、トークンを共通に使用できます。アプリケーションを役割に割り当てる方法の詳細については、articleを参照してください。このblogには、AceessTokenを入手するための詳細な手順もあります。 enter image description here

関連する問題