ダイナミックCRM 365 Web APIを使用するWebアプリケーションがあります。動的CRMは、ADFS上の依拠当事者として構成されています。 サーバーはWindows Server 2016で、すべてが敷地内にあり、Azureにはありません。私は、次の有効なトークンがある取得するためにやったダイナミックCRM Web APIにアクセスするためにWebAppをADFSに承認
:ADFSで
1)アプリケーショングループに行って、新しいサーバーアプリケーションを追加するには、クライアントIDを取っても、私のWebアプリケーション用のクライアントシークレットを生成します。
2)Active DirectoryにwebAppUser
3)アプリケーションIDとCRMにように私は自分のウェブを登録したとき、私は早くなったのClientIDをアプリケーションユーザをこのユーザーを追加する新しい新しいユーザーを追加します。 appをADFSに追加します。また、Entity Accountの完全なアクセス許可を持つ新しい役割を作成し、この役割をこのアプリケーションユーザーに割り当てます。
4)以下のコードを使用してベアラトークンを取得し、HttpClient Authorizationヘッダーに追加します。
public class CrmWebApiClient
{
private HttpClient _httpClient;
public CrmWebApiClient()
{
_httpClient = new HttpClient();
_httpClient.BaseAddress = new Uri("https://crmbaseaddress.com");
}
internal async Task Initialize()
{
try
{
var authority = "https://adfsServerUrl/adfs/";
var authContext = new AuthenticationContext(authority,false);
var credentials = new ClientCredential(clientID,clientSecret);
var authResult = await authContext.AcquireTokenAsync("https://crmbaseaddress.com", credentials);
_httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
}
catch (Exception ex)
{
var error = ex;
}
}
internal async Task<string> GetValuesAsync()
{
var result = string.Empty;
try
{
result = await _httpClient.GetStringAsync("api/data/v8.1/accounts");
}
catch (Exception ex)
{
var error = ex;
}
return result;
}
}
5)私はトークンを取得することができますが、私はCRMのWeb APIを呼び出すと、まだ401 Unauthorizedを取得します。
私を助けてもらえますか?私は正しい道にいますか?もっと何をすべきか?私は、システムのユーザーを使用して有効なトークンを取得するために以下のコードを使用して、私のOAuthリクエストで、それの資格情報を送信しなければならなかった終わり
この何ADFSのバージョンですか?パスワードの付与はサポートされていますか?明らかに存在しますが、もう少し詳しく説明できますか? – davidcarr
@davidcarr最新のADFSを使用しているWindows Server 2016 –
@RickyStam同様の状況がありますが、システムユーザーが何を意味しているか分かりますか?すべてのユーザーは作成されていませんか? –