0

バックグラウンドジョブ(数分ごとに更新されたコンテンツをアップロードする)でDynamics CRM APIの一部と話し合う必要のあるアプリで作業しています。クライアントアサーション証明書(Azure AD)を使用したDynamics CRMデーモンアプリが提供されています。

ユーザー資格情報(アプリのアクセス許可)を使用したADAL認証はCRM APIで完璧に使用されるため、クライアントアサーション証明書の資格情報でも動作するようになっています。これは動作し、私がアクセストークンを取得することができています

var certCred = new ClientAssertionCertificate(clientId, cert); 
var result = await authContext.AcquireTokenAsync("https://<tenant_name>.crm4.dynamics.com/", certCred); 

-

コードは次のようになります。ただし、これらは委任権限であるため、CRM WebAPIにアクセスする権限を取得することはできません。

私は明らかにバックグラウンドタスクを実行するためにサービス/デーモンアカウントを使用できますが、私はクライアントのアサーション証明書でそれ以上のことをしたいと思っていました。誰かがこのようなシナリオの解決策を見つけましたか? CRM WebAPIは権限を委任することをサポートしていますか?

他の方法はありますか?

答えて

1

最初にいくつかの概念を明確にしたいと思います。クライアントの資格フローは、アプリケーションの委任された権限の代わりにアプリケーションの権限を取得するために使用されます。通常、OAuth 2.0コード許可フローはデリゲート権限を取得するために使用されます。

説明から、クライアント資格フローを使用してアプリケーション権限を取得したいと思われますが、トークンはDynamics CRM Web APIを呼び出すために無効です。研究の後、私はこの問題が何度も提起されたが、答えはないことを発見した。

Dynamics CRM Web APIは、AzureでこのAPI用のアプリケーションを登録すると、アプリケーショントークン(クライアント資格情報フローを使用して取得)をサポートしていないため、許可を確認できません以下の図のようなアプリケーションレベルのスコープ: enter image description here

+0

デーモンサービスを作成するにはどうすればよいですか? –

+0

デーモンサービスでDynamics CRM Web APIを使用するには、パスワードフローで認証できます。詳細はこちらを参照してください[https://msdn.microsoft.com/en-us/library/hh675404.aspx] –

+0

おそらく私の質問への答えはあなたを助けるかもしれない:Deamonサービスのために:http://stackoverflow.com/questions/37454539/c-sharp-as-confidential-user-daemon-server-server-to-server-401-u – IntegerWolf

関連する問題