2017-04-02 12 views
1

私はデータカタログに接続し、テーブルに関する情報を取得するはずのバックグラウンドアプリケーションを持っています。バックグラウンド・アプリケーション以来、データ・カタログ要求を認証するためのユーザーの介入はできません。ですから、代わりにClientIDとClientSecretを使って認証しようとしています。アプリケーショントークンベースのリクエストが401の権限ではない戻り値

string authorityUri = "https://login.microsoftonline.com/{adtenanthere}"; 

string resourceUri = "https://datacatalog.azure.com"; 

string clientId = "{clientidhere}"; 

string clientSecret = "{clientsecrethere}"; 

AuthenticationContext authContext1 = new AuthenticationContext(authorityUri, false); 

ClientCredential credential = new ClientCredential(clientId, clientSecret); 

AuthenticationResult authResult = authContext1.AcquireTokenAsync(resourceUri, credential).Result; 

string token = authResult.CreateAuthorizationHeader(); 

この方法を使用してトークンが成功しているされて、私はデータカタログAPI要求に対して、このトークンを使用する場合ただし、要求は「401を返し、取得 - 権限:アクセスが資格情報が無効のため拒否されている必要はありません指定した資格情報を使用してこのディレクトリまたはページを表示するためのアクセス許可を与えます。

私がここで紛失する可能性があることをお勧めします!一部のデータが不正確である

答えて

0

まずAzureの広告の許可でアプリケーションのパーミッションを確認してください。私は確認しましたApplication Azureデータカタログでは許可されていません。したがって、ユーザー資格情報を使用してアクセスする必要があります。画像を参照してください

アプリケーションのアクセス許可はクライアントの資格情報に基づいています。代理人 ログインユーザーのアクセス許可に基づくアクセス許可

ログインポップアップが不要な場合は、ユーザ資格情報 をauthContext1.AcquireTokenAsyncに直接渡す必要があります。だから、

enter image description here

enter image description here

、変更とあなたが401権限

を得ることはありませチェックし、私はそれはあなたのための助けだと思います。

+0

Monicaに与えられた権限urlとresource urlも正しい値であることを確認してください – umasankar

関連する問題