Online Management API の使用を認証
注意
2020 年 8 月 26 日より、オンライン管理の API は非推奨となります。
Online Management API は、OAuth 2.0 プロトコル をサポートし認証します。 Azure Active Directory (AAD) を使用して、有効な OAuth 2.0 アクセス トークン を取得して認証し、Online Management API へのリクエストの 認証 ヘッダーを使い送ります。
Online Management API で使用する推奨認証 API は、Azure Active Directory Authentication Library (ADAL) で、これはさまざまなプラットフォームやプログラミング言語で利用できます。
認証の方法。
これらは、Online Management API サービスを認証するための広範な手順です。
アプリの clientId と redirectUrl 値を得るため Azure Active Directory でアプリを登録します。 詳細は、チュートリアル: Azure Active Directory でアプリを登録 の "OAuth 認証のアプリ登録" セクションを確認します。
認証 ヘルパー コード のステップ # 1 から得られた値を指定します。
// TODO: Substitute your app registration values here. // These values are obtained on registering your application with the // Azure Active Directory. private static string _clientId = "<GUID>"; //e.g. "e5cf0024-a66a-4f16-85ce-99ba97a24bb2" private static string _redirectUrl = "<Url>"; //e.g. "app://s7cf7712-b773-4f16-92b3-34cs97a25cc7"サービス URL に基づいて Online Management API の権限情報を検出します。 北米地域の場合、サービス URL は次のとおりです:https://admin.services.crm.dynamics.com。 地域固有のサービス URL については、サービス URL を参照してください
Azure Active Directory チャレンジ・フォーマットを使用して、API のサービス URL に基づいて権限情報を判別します。
また、次のステップでアクセス トークンを取得するために使用される Online Management API (サービス URL とは異なる) のリソースも決定しています。public static async Task<string> DiscoverAuthority(string _serviceUrl) { try { AuthenticationParameters ap = await AuthenticationParameters.CreateFromResourceUrlAsync( new Uri(_serviceUrl + "/api/aad/challenge")); _resource = ap.Resource; return ap.Authority; } catch (HttpRequestException e) { throw new Exception("An HTTP request exception occurred during authority discovery.", e); } catch (Exception e) { throw e; } }前の手順で見つけたリソースをクライアント ID とともに使用し、クライアント アプリの URL 値をリダイレクトしてアクセ ストークンを取得します。 アクセス トークンを取得または更新するには、サービス URL ではなくリソースを使用する必要があります。
public AuthenticationResult AcquireToken() { return _authContext.AcquireToken(_resource, _clientId, new Uri(_redirectUrl), PromptBehavior.Always); }アクセス トークンを取得したら、メッセージ要求の 認証 ヘッダーをアクセス トークン値に設定し、トークン タイプを 負担者 と指定する必要があります。 また、言語の承諾 ヘッダーを設定して応答で優先する言語を指定します。 認証の
SendAsyncメソッドは、全てのメッセージ リクエストにこれらのヘッダー値を設定します。protected override Task<HttpResponseMessage> SendAsync( HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { // It is a best practice to refresh the access token before every message request is sent. Doing so // avoids having to check the expiration date/time of the token. This operation is quick. request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _auth.AcquireToken().AccessToken); // Set the "Accept-Language" header request.Headers.Add("Accept-Language", "en-US"); return base.SendAsync(request, cancellationToken); }
Online Management API に対して、メッセージを実行するように設定されています。 Microsoft 365 テナントのすべての Microsoft Dataverse 環境を取得する方法を示すサンプル コードについては、クイック スタート サンプル: テナントの環境を取得 で確認してください。
関連トピック
サンプル: Online Management API の認証ヘルパー
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。
フィードバック
フィードバックの送信と表示