私はAzure ADでDynamics 365(委任された権限)へのアクセス権を持つように定義されたWebアプリケーションを持っています。Azure ADで認証して、クライアントクレデンシャルを使用してDynamics Web APIにアクセスすることは可能ですか?
そして私はClient Credentials Grantを使用して、azure ADからアクセストークンを取得しています。
var clientCredential = new ClientCredential(clientId, clientSecret);
var result = authContext.AcquireTokenAsync(dynamicsTenant, clientCredential).Result;
しかし、私はこのようなWeb APIにアクセスしようとすると、HTTP 401を得続ける:だから私はこれをやっている
var response = httpClient.GetAsync(dynamicsTenant + "/api/data/v8.1/contacts").Result;
それはこのように、Resource Owner Password Credentials Grantで動作します:
var userCredential = new UserPasswordCredential("crmuser", "crmpwd");
var result = authContext.AcquireTokenAsync(dynamicsTenant, clientId, userCredential).Result;
ダイナミック365にアクセスを禁止する可能性のある設定がありますか?
私の目的は、(ヘッドレス)機密クライアントからDynamics(Online)Web APIを使用することです。
私はちょっと期待していたが、聞きたくなかった答えです。 –
なぜそれを言うのですか?委任対アプリケーションのパーミッションは非常に重要なセグメンテーションです。クライアントアプリケーションがAPIに対して持つ権限は、トークンのコンテキストによって大きく異なります。電子メール管理アプリケーションを作成している場合、サインインしているときにアプリがメールを削除できますが、アプリが自分のユーザートークンを持たず、アプリ専用モードで動作していないときは、 –
私は合理的な期待であることに同意します。私の場合、私はユーザーのトークンを持っていないので、私は自分のアプリのためにダイナミックなログインを持たなければならないかもしれないということを意味します。 –