2017-10-24 4 views
2

ADFS認証を使用するIFDとして動作するDynamics 2016のAzureでホストされた「オンプレミス」インスタンスがあります。現在、AzureでホストされているAzure APIを使用して、CRM Web APIを使用してDynamicsインスタンスと通信する必要があります。これを実現するには、Microsoft.IdentityModel.Clients.ActiveDirectoryライブラリを利用して、https://msdn.microsoft.com/en-gb/library/gg327838.aspxのようにADALを使用してOAuth認証を使用して認証する必要があります。私たちは、しかし、インタラクティブフローの状況で使用するためのものであるとすぐAcquireTokenAsync方法は、ログインダイアログと呼ばれているとして、(表示方法として理にかなって、ADFSCRM Web Api ADFS OAuth

var resource = "https://reosurce.com/"; 
var clientId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; 
var authProvider = "https://adfs.server.com/adfs/oauth2/token"; 
var redirectUri = "https://crm2Environment.com/"; 

var authContext = new AuthenticationContext(authProvider, false); 
var authToken = authContext.AcquireTokenAsync(resource, clientId, new 
Uri(redirectUri), new PlatformParameters(PromptBehavior.Always)). 
Result.AccessToken; 

のコード例が正常に実行さからトークンを取得するために、次のコードを持っていますそうでなければ、ADFSは認証するかどうかを知っていますが、これは明らかにドメインに依存しないAPIでは機能しませんし、ADFSに資格を渡す方法もありません。 AcquireTokenAsyncメソッドの代替オーバーロードは、概説されている状況ではADFSに適用されるものではありません。何か不足していますか?ドメインアカウント認証を使用せずに、非インタラクティブなフローでトークンを取得する別の方法はありますか? Azure ADで使用できる例は、ADFSシナリオでは動作していないように見えることに注意してください。現在のADSFサーバーは、インフラストラクチャチームによって管理されているため、現在のADSFサーバーを所有していないか、アクセスできません。 ADFSを変更することが可能です)

答えて

0

MSI(Managed Service Identity)を見てください。これは、Azure-to-Azureサービスの新しい通信プロトコルです。

Managed Service Identity (MSI) for Azure resources

あなたがこれを研究として、古いパターンを混乱に陥るしないようにしてください(サービス・ツー・AzureServiceの通信のためにまだ有効である)あなたはAzureの上ClientIdを/ ClientSecret/URLを生成する場所ですこれらの値をアクセスを必要とするアプリケーションと共有します。 Use Azure Key Vault from a Web Applicationこの例では、Azure Key Vaultへの接続を示していますが、Azure Active Directory認証を使用するAzureサービスでも可能です。

+0

Azure to Azureサービスは、CRMが敷地内にあり、IFDからADFS – cirrus42

1

どのバージョンのADFSを使用していますか?

ADFS 4.0で、サーバーからサーバーへのフロー(そのような音)は、ログイン/パスワードなしの秘密キーの知識を使用するクライアントの資格情報を使用します。

いいリンクhere

+0

であるため、この状況では役に立ちません。Windows Server 2012で実行されているADFS 3.0 – cirrus42

+1

申し訳ありません - このフローはADFS 3.0ではサポートされていません。 – nzpcmad

+1

これは正解とマークする必要があります。 – davidcarr

関連する問題