API Management の認証ポリシーAPI Management authentication policies

このトピックでは、次の API Management ポリシーについて説明します。This topic provides a reference for the following API Management policies. ポリシーを追加および構成する方法については、「 Azure API Management のポリシー」をご覧ください。For information on adding and configuring policies, see Policies in API Management.

認証ポリシーAuthentication policies

基本認証Authenticate with Basic

authentication-basic ポリシーを使用し、基本認証を使用してバックエンド サービスで認証します。Use the authentication-basic policy to authenticate with a backend service using Basic authentication. このポリシーでは、HTTP 承認ヘッダーが、ポリシーに指定された資格情報に対応する値に効率よく設定されます。This policy effectively sets the HTTP Authorization header to the value corresponding to the credentials provided in the policy.

ポリシー ステートメントPolicy statement

<authentication-basic username="username" password="password" />

Example

<authentication-basic username="testuser" password="testpassword" />

要素Elements

名前Name 説明Description 必須Required
authentication-basicauthentication-basic ルート要素。Root element. はいYes

属性Attributes

名前Name 説明Description 必須Required DefaultDefault
usernameusername 基本認証の資格情報のユーザー名を指定します。Specifies the username of the Basic credential. はいYes 該当なしN/A
passwordpassword 基本認証の資格情報のパスワードを指定します。Specifies the password of the Basic credential. はいYes 該当なしN/A

使用法Usage

このポリシーは、次のポリシー セクションスコープで使用できます。This policy can be used in the following policy sections and scopes.

  • ポリシー セクション: inboundPolicy sections: inbound

  • ポリシー スコープ: すべてのスコープPolicy scopes: all scopes

クライアント証明書による認証Authenticate with client certificate

authentication-certificate ポリシーを使用し、クライアント証明書を使用してバックエンド サービスで認証します。Use the authentication-certificate policy to authenticate with a backend service using client certificate. 証明書は最初に API Management にインストールする必要があります。サムプリントによって識別されます。The certificate needs to be installed into API Management first and is identified by its thumbprint.

ポリシー ステートメントPolicy statement

<authentication-certificate thumbprint="thumbprint" certificate-id="resource name"/>

Examples

この例では、クライアント証明書はサムプリントによって識別されます。In this example, the client certificate is identified by its thumbprint:

<authentication-certificate thumbprint="CA06F56B258B7A0D4F2B05470939478651151984" />

この例では、クライアント証明書はリソース名によって識別されます。In this example, the client certificate is identified by the resource name:

<authentication-certificate certificate-id="544fe9ddf3b8f30fb490d90f" />  

この例では、クライアント証明書は、組み込みの証明書ストアから取得されるのではなく、ポリシーで設定されています。In this example, the client certificate is set in the policy rather than retrieved from the built-in certificate store:

<authentication-certificate body="@(context.Variables.GetValueOrDefault<byte[]>("byteCertificate"))" password="optional-certificate-password" />

要素Elements

名前Name 説明Description 必須Required
authentication-certificateauthentication-certificate ルート要素。Root element. はいYes

属性Attributes

名前Name 説明Description 必須Required DefaultDefault
thumbprintthumbprint クライアント証明書のサムプリント。The thumbprint for the client certificate. thumbprint または certificate-id のいずれかが存在しなければなりません。Either thumbprint or certificate-id must be present. 該当なしN/A
証明書 IDcertificate-id 証明書リソースの名前。The certificate resource name. thumbprint または certificate-id のいずれかが存在しなければなりません。Either thumbprint or certificate-id must be present. 該当なしN/A
bodybody バイト配列としてのクライアント証明書。Client certificate as a byte array. いいえNo 該当なしN/A
passwordpassword クライアント証明書のパスワード。Password for the client certificate. body で指定された証明書がパスワードで保護されている場合に使用されます。Used if certificate specified in body is password protected. 該当なしN/A

使用法Usage

このポリシーは、次のポリシー セクションスコープで使用できます。This policy can be used in the following policy sections and scopes.

  • ポリシー セクション: inboundPolicy sections: inbound

  • ポリシー スコープ: すべてのスコープPolicy scopes: all scopes

マネージド ID による認証Authenticate with managed identity

authentication-managed-identity ポリシーを使用して、マネージド ID を利用するバックエンド サービスで認証します。Use the authentication-managed-identity policy to authenticate with a backend service using the managed identity. このポリシーでは、指定されたリソースにアクセスするためのアクセス トークンを Azure Active Directory から取得するために、基本的にマネージド ID を利用します。This policy essentially uses the managed identity to obtain an access token from Azure Active Directory for accessing the specified resource. トークンが正常に取得されると、ポリシーは、Bearer スキームを使用してトークンの値を Authorization ヘッダーに設定します。After successfully obtaining the token, the policy will set the value of the token in the Authorization header using the Bearer scheme.

システムによって割り当てられた ID と、ユーザーが割り当てた複数の ID のいずれかの、どちらを使用してもトークンを要求できます。Both system-assigned identity and any of the multiple user-assigned identity can be used to request token. client-id が指定されていない場合、システムによって割り当てられた ID が指定されたと見なされます。If client-id is not provided system-assigned identity is assumed. client-id 変数が指定されている場合、そのユーザー割り当て ID のトークンが Azure Active Directory に要求されますIf the client-id variable is provided token is requested for that user-assigned identity from Azure Active Directory

ポリシー ステートメントPolicy statement

<authentication-managed-identity resource="resource" client-id="clientid of user-assigned identity" output-token-variable-name="token-variable" ignore-error="true|false"/>  

Example

マネージド ID を使用してバックエンド サービスで認証するUse managed identity to authenticate with a backend service

<authentication-managed-identity resource="https://graph.microsoft.com"/> 
<authentication-managed-identity resource="https://management.azure.com/"/> <!--Azure Resource Manager-->
<authentication-managed-identity resource="https://vault.azure.net"/> <!--Azure Key Vault-->
<authentication-managed-identity resource="https://servicebus.azure.net/"/> <!--Azure Service Bus-->
<authentication-managed-identity resource="https://storage.azure.com/"/> <!--Azure Blob Storage-->
<authentication-managed-identity resource="https://database.windows.net/"/> <!--Azure SQL-->
<authentication-managed-identity resource="api://Client_id_of_Backend"/> <!--Your own Azure AD Application-->

マネージド ID を使用し、ヘッダーを手動で設定するUse managed identity and set header manually

<authentication-managed-identity resource="api://Client_id_of_Backend"
   output-token-variable-name="msi-access-token" ignore-error="false" /> <!--Your own Azure AD Application-->
<set-header name="Authorization" exists-action="override">
   <value>@("Bearer " + (string)context.Variables["msi-access-token"])</value>
</set-header>

send-request ポリシーでマネージド ID を使用するUse managed identity in send-request policy

<send-request mode="new" timeout="20" ignore-error="false">
    <set-url>https://example.com/</set-url>
    <set-method>GET</set-method>
    <authentication-managed-identity resource="ResourceID"/>
</send-request>

要素Elements

名前Name 説明Description 必須Required
authentication-managed-identityauthentication-managed-identity ルート要素。Root element. はいYes

属性Attributes

名前Name 説明Description 必須Required DefaultDefault
resourceresource 文字列 をオンにします。String. Azure Active Directory におけるターゲット Web API のアプリ ID (セキュリティで保護されたリソース)。The App ID of the target web API (secured resource) in Azure Active Directory. はいYes 該当なしN/A
client-idclient-id 文字列 をオンにします。String. Azure Active Directory のユーザー割り当て ID のアプリ ID。The App ID of the user-assigned identity in Azure Active Directory. いいえNo システム割り当て IDsystem-assigned identity
output-token-variable-nameoutput-token-variable-name 文字列 をオンにします。String. オブジェクトの種類 string としてトークン値を受け取るコンテキスト変数の名前。Name of the context variable that will receive token value as an object type string. いいえNo 該当なしN/A
ignore-errorignore-error Boolean です。Boolean. true に設定された場合、アクセス トークンが取得されなかったとしても、ポリシー パイプラインは引き続き実行されます。If set to true, the policy pipeline will continue to execute even if an access token is not obtained. いいえNo falsefalse

使用法Usage

このポリシーは、次のポリシー セクションスコープで使用できます。This policy can be used in the following policy sections and scopes.

  • ポリシー セクション: inboundPolicy sections: inbound

  • ポリシー スコープ: すべてのスコープPolicy scopes: all scopes

次のステップNext steps

ポリシーを使用する方法の詳細については、次のトピックを参照してください。For more information working with policies, see: