クライアント アプリを認証する (Azure Data Catalog REST API)


この記事では、Data Catalog クライアント アプリを認証する方法について説明します。 C# のサンプルが含まれていますが、認証プロセスは他のプログラミング言語と同じです。

Data Catalogクライアント アプリでは、Active Directory (Azure AD) を使用してユーザーを認証し、アプリケーションを保護します。 認証は、アプリやユーザーを識別するプロセスです。 Azure AD でクライアント アプリを識別するには、アプリを Azure AD に登録します。 Azure Active Directory にクライアント アプリを登録するときに、アプリにData Catalog API へのアクセス権を付与します。 Data Catalog クライアント アプリを登録する方法については、「クライアント アプリを登録する」を参照してください。

Data Catalog REST API 呼び出しは、要求の "Authorization" ヘッダーにトークンを渡すことによって、認証されたユーザーの代わりに行われます。 トークンは、Azure Active Directory から取得されます。

Data Catalog クライアント アプリを認証するために必要なもの

Data Catalog クライアント アプリを認証し、REST Web 要求を実行するには、次の操作を行う必要があります。

  1. クライアント アプリの登録 - Data Catalogクライアント アプリを登録するには、「クライアント アプリを登録する」を参照してください。 Azure Active Directory にクライアント アプリを登録するときに、アプリにData Catalog API へのアクセス権を付与します。

  2. アプリのクライアント ID を割り当てる - アプリ のクライアント ID を取得するには、「 クライアント アプリ ID を取得する方法」を参照してください。 クライアント ID は、アクセス許可を要求しているユーザーを識別するためにアプリケーションによって使用されます。

    • クライアント アプリ コードで、 clientID 変数を Azure アプリケーションの clientID に割り当てます。
  3. リダイレクト URI の割り当て - クライアント アプリの場合、リダイレクト URI は、認証する特定のアプリケーションに関する詳細を Azure AD に提供します。 Uniform Resource Identifier (URI) は、リソースの名前を識別する値です。

    • クライアント アプリ コードで、 redirectUri を に https://login.live.com/oauth20_desktop.srf割り当てます。 クライアント アプリにはリダイレクト先となる外部サービスがないため、この URI はクライアント アプリの標準的なプレース ホルダーになります。
  4. Data Catalog API のリソース URI を割り当てる - リソース URI は、Data Catalog API リソースを識別します。

    • クライアント アプリ コードで、 resourceUri を に https://datacatalog.azure.com割り当てます。
  5. OAuth2 オーソリティ URI を割り当てる - オーソリティ URI は、OAuth2 オーソリティのリソースを識別します。

    • クライアント アプリ コードで、機関 URI を に https://login.windows.net/common/oauth2/authorize割り当てます。

Data Catalog REST サービスにデータ要求を行うには、アクセス トークンを指定する必要があります。 .NET クライアント アプリでは、 Microsoft Authentication Library (MSAL) を使用してアクセス トークンを取得します。

重要

クライアント アプリを認証するには、 への参照を追加する Microsoft.Identity.Client必要があります。これは、Microsoft Authentication Library (MSAL) に含まれています。 アプリで ADAL が引き続き使用されている場合は、MSAL に移行します。 詳細については、「 ADAL.NET アプリと MSAL.NET アプリの違い」を参照してください。

Install-Package Microsoft.Identity.Client -Version 4.48.1 

アクセス トークンを取得する手順

MSAL を使用してアクセス トークンを取得するかどうかは、 パブリック クライアント アプリケーションと機密クライアント アプリケーションのどちらを構築しているかによって異なります。 シナリオのアクセス トークンを取得するには、次の手順を参照してください。

非推奨の ADAL ライブラリをまだ使用しているデータ カタログがある場合は、 アプリを ADAL から MSAL に移行します

トークンを使用して REST API をData Catalogする要求を行う

Active Directory (Azure AD) からアクセス トークンを取得した後、トークンを使用して、Data Catalog REST API に対して Web 要求を行います。 Data Catalog REST Web 要求を作成するには、要求ヘッダーにアクセス トークンを追加します。 たとえば、.NET アプリで、

HttpWebRequest request = System.Net.WebRequest.Create(apiUrl) as System.Net.HttpWebRequest;  
...  
string authHeader = authResult.CreateAuthorizationHeader();             
request.Headers.Add("Authorization", authHeader);  

Azure 認証コンテキスト フロー

.NET クライアント アプリで、AuthenticationContext を使用して Azure アクセス トークンを取得します。 AuthenticationContext は、Azure AD リソースの権限を発行するトークンを表すメイン クラスです。 AuthenticationContext は、次を実行します。

  1. AuthenticationContext は、Azure Active Directory の認証エンドポイントにユーザー エージェントをリダイレクトすることでフローを開始します。 ユーザーは認証し、同意が要求された場合は同意します。
  2. Azure Active Directory の認証エンドポイントは、認証コードを使用して AuthenticationContext にユーザー エージェントをリダイレクトします。 ユーザー エージェントは、クライアント アプリケーションのリダイレクト URI に認証コードを返します。
  3. AuthenticationContext は、Azure Active Directory のトークン発行エンドポイントからアクセス トークンを要求します。 Web アプリケーションは、承認コードを示してユーザーが同意したことを証明します。
  4. Azure Active Directory のトークン発行エンドポイントは、アクセス トークンを返します。
  5. クライアント アプリケーションは、アクセス トークンを使用して Web API を認証します。
  6. クライアント アプリケーションを認証した後、Data Catalog REST API は要求されたデータを返します。

Azure Active Directory (Azure AD) の承認フローの詳細については、「認証コード付与フロー」をご覧ください。