重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
Azure AD B2C ユーザー フロー内に REST API を統合する場合は、認証を使用して REST API エンドポイントを保護する必要があります。 REST API 認証により、Azure AD B2C などの適切な資格情報を持つサービスのみがエンドポイントを呼び出すことができます。 この記事では、REST API をセキュリティで保護する方法について説明します。
[前提条件]
サインアップ ユーザー フロー ガイドへの API コネクタの追加に関するガイドの手順を完了します。
API エンドポイントを保護するには、HTTP 基本認証または HTTPS クライアント証明書認証を使用します。 どちらの場合も、Azure AD B2C が API エンドポイントを呼び出すときに使用する資格情報を指定します。 次に、API エンドポイントは資格情報を確認し、承認の決定を行います。
HTTP 基本認証
HTTP 基本認証は RFC 2617 で定義されています。 基本認証は次のように機能します。
Azure AD B2C は、
username
ヘッダーにクライアント資格情報 (password
とAuthorization
) を含む HTTP 要求を送信します。資格情報は、Base64 でエンコードされた文字列
username:password
として書式設定されます。その後、お使いの API によってこれらの値がチェックされ、他の承認決定が実行されます。
HTTP 基本認証を使用して API コネクタを構成するには、次の手順を実行します。
- Azure portal にサインインします。
- Azure サービスで、Azure AD B2C を選択するか、Azure AD B2C を検索して選択します。
- API コネクタを選択し、構成する API コネクタを選択します。
- [認証の種類] で 、[基本] を選択します。
- REST API エンドポイントの ユーザー名と パスワード を指定します。
- 保存 を選択します。
REST API ユーザー名とパスワード ポリシー キーを追加する
HTTP 基本認証を使用して REST API 技術プロファイルを構成するには、ユーザー名とパスワードを格納する次の暗号化キーを作成します。
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
- [概要] ページで、[Identity Experience Framework] を選びます。
- [ポリシー キー] を選択してから、[追加] を選択します。
- [オプション] で、[手動] を選択します。
- [名前] に「RestApiUsername」と入力します。 プレフィックス B2C_1A_ は自動的に追加される場合があります。
- [ シークレット ] ボックスに、REST API ユーザー名を入力します。
- [ キーの使用法] で、[ 暗号化] を選択します。
- を選択してを作成します。
- もう一度 [ポリシー キー] を選択します。
- [] を選択し、[] を追加します。
- [オプション] で、[手動] を選択します。
- [名前] に「RestApiPassword」と入力します。 プレフィックス B2C_1A_ は自動的に追加される場合があります。
- [ シークレット ] ボックスに、REST API パスワードを入力します。
- [ キーの使用法] で、[ 暗号化] を選択します。
- を選択してを作成します。
HTTP 基本認証を使用するように REST API 技術プロファイルを構成する
必要なキーを作成したら、資格情報を参照するように REST API 技術プロファイル メタデータを構成します。
- 作業ディレクトリで、拡張ポリシー ファイル (TrustFrameworkExtensions.xml) を開きます。
- REST API 技術プロファイルを検索します。 たとえば、
REST-ValidateProfile
やREST-GetProfile
などです。 -
<Metadata>
要素を探します。 -
AuthenticationType を
Basic
に変更します。 -
AllowInsecureAuthInProduction を
false
に変更します。 - 終了
</Metadata>
要素の直後に、次の XML スニペットを追加します。<CryptographicKeys> <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" /> <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" /> </CryptographicKeys>
次の XML スニペットは、HTTP 基本認証で構成された RESTful 技術プロファイルの例です。
<ClaimsProvider>
<DisplayName>REST APIs</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="REST-GetProfile">
<DisplayName>Get user extended profile Azure Function web hook</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="AuthenticationType">Basic</Item>
<Item Key="AllowInsecureAuthInProduction">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
<Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
</CryptographicKeys>
...
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
HTTPS クライアント証明書認証
クライアント証明書認証は相互証明書ベースの認証であり、クライアントである Azure AD B2C は、その ID を証明するためにクライアント証明書をサーバーに提供します。 これは、SSL ハンドシェイクの一部として発生します。 API は、証明書が Azure AD B2C などの有効なクライアントに属することを検証し、承認の決定を実行する責任を負います。 クライアント証明書は、X.509 デジタル証明書です。
重要
運用環境では、この証明書は証明機関によって署名されている必要があります。
証明書を作成する
オプション 1: Azure Key Vault を使用する (推奨)
証明書を作成するには、 Azure Key Vault を使用できます。このコンテナーには、自己署名証明書のオプションと、署名された証明書の証明書発行者プロバイダーとの統合が含まれています。 推奨設定には次が含まれます。
-
件名:
CN=<yourapiname>.<tenantname>.onmicrosoft.com
-
コンテンツ タイプ:
PKCS #12
-
有効期間の種類:
Email all contacts at a given percentage lifetime
またはEmail all contacts a given number of days before expiry
-
キーの種類:
RSA
-
キー サイズ:
2048
-
エクスポート可能な秘密キー:
Yes
(.pfx
ファイルをエクスポートできるようにするため)
その後、 証明書をエクスポートできます。
オプション 2: PowerShell モジュールを使用して自己署名証明書を準備する
証明書をまだ持っていない場合は、自己署名証明書を使用できます。 自己署名証明書は、証明機関 (CA) によって署名されていないセキュリティ証明書であり、CA によって署名された証明書のセキュリティ保証を提供するものではありません。
Windows では、PowerShell の New-SelfSignedCertificate コマンドレットを使用して証明書を生成します。
この PowerShell コマンドを実行して、自己署名証明書を生成します。
-Subject
などのアプリケーションと Azure AD B2C のテナント名に合わせてcontosowebapp.contoso.onmicrosoft.com
引数を変更します。 また、証明書に別の有効期限を指定するように-NotAfter
日付を調整することもできます。New-SelfSignedCertificate ` -KeyExportPolicy Exportable ` -Subject "CN=yourappname.yourtenant.onmicrosoft.com" ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -KeyUsage DigitalSignature ` -NotAfter (Get-Date).AddMonths(12) ` -CertStoreLocation "Cert:\CurrentUser\My"
Windows コンピューターで、[ユーザー証明書の管理] を検索して選択します
[ 証明書 - 現在のユーザー] で、[ 個人用>Certificates>yourappname.yourtenant.onmicrosoft.com を選択します。
証明書を選択し、 アクション>すべてのタスク>Export を選択します。
[次へ>次へ] を選択し、秘密キーをエクスポートします>次へ。
[ ファイル形式のエクスポート] の既定値をそのまま使用し、[ 次へ] を選択します。
[パスワード] オプションを有効にし、証明書のパスワードを入力して、[次へ] を選択します。
証明書を保存する場所を指定するには、[ 参照 ] を選択し、任意のディレクトリに移動します。
[ 名前を付けて保存 ] ウィンドウで、 ファイル名を入力し、[保存] を選択 します。
[ 次へ>完了] を選択します。
Azure AD B2C で .pfx ファイルのパスワードを受け入れるには、Windows 証明書ストアのエクスポート ユーティリティで、AES256-SHA256 ではなく、TripleDES-SHA1 オプションを使用してパスワードを暗号化する必要があります。
API コネクタを構成する
クライアント証明書認証を使用して API コネクタを構成するには、次の手順を実行します。
- Azure portal にサインインします。
- Azure サービスで、Azure AD B2C を選択します。
- API コネクタを選択し、構成する API コネクタを選択します。
- [認証の種類] で [証明書] を選択します。
- [ 証明書のアップロード ] ボックスで、秘密キーを含む証明書の .pfx ファイルを選択します。
- [ パスワードの入力 ] ボックスに、証明書のパスワードを入力します。
- 保存 を選択します。
承認の決定を実行する
API エンドポイントを保護するために、API では、送信されたクライアント証明書に基づいて承認が実装される必要があります。 Azure App Service と Azure Functions については、API コードから証明書を有効にして検証する方法については、TLS 相互認証の構成に関するページを参照してください。 または、任意の API サービスの前のレイヤーとして Azure API Management を使用して、 クライアント証明書のプロパティ を目的の値と照合することもできます。
証明書の更新
証明書の有効期限が切れるタイミングに関するアラーム アラートを設定することをお勧めします。 新しい証明書を生成し、使用した証明書の有効期限が切れようとしている場合は、上記の手順を繰り返す必要があります。 新しい証明書の使用を "ロール" するために、新しい証明書がデプロイされている間、一時的に、お使いの API サービスで引き続き古い証明書と新しい証明書を受け入れることができます。
既存の API コネクタに新しい証明書をアップロードするには、API コネクタの下にある API コネクタを選択し、[ 新しい証明書のアップロード] をクリックします。 有効期限が切れていない、開始日が経過した最新のアップロードされた証明書は、Azure AD B2C によって自動的に使用されます。
クライアント証明書ポリシー キーを追加する
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
- [概要] ページで、[Identity Experience Framework] を選びます。
- [ポリシー キー] を選択してから、[追加] を選択します。
- [ オプション ] ボックスで、[ アップロード] を選択します。
- [ 名前 ] ボックスに「 RestApiClientCertificate」と入力します。 プレフィックス B2C_1A_ は自動的に追加されます。
- [ ファイルのアップロード ] ボックスで、秘密キーを含む証明書の .pfx ファイルを選択します。
- [ パスワード ] ボックスに、証明書のパスワードを入力します。
- を選択してを作成します。
クライアント証明書認証を使用するように REST API 技術プロファイルを構成する
必要なキーを作成したら、クライアント証明書を参照するように REST API 技術プロファイル メタデータを構成します。
- 作業ディレクトリで、拡張ポリシー ファイル (TrustFrameworkExtensions.xml) を開きます。
- REST API 技術プロファイルを検索します。 たとえば、
REST-ValidateProfile
やREST-GetProfile
などです。 -
<Metadata>
要素を探します。 -
AuthenticationType を
ClientCertificate
に変更します。 -
AllowInsecureAuthInProduction を
false
に変更します。 - 終了
</Metadata>
要素の直後に、次の XML スニペットを追加します。<CryptographicKeys> <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" /> </CryptographicKeys>
次の XML スニペットは、HTTP クライアント証明書で構成された RESTful 技術プロファイルの例です。
<ClaimsProvider>
<DisplayName>REST APIs</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="REST-GetProfile">
<DisplayName>Get user extended profile Azure Function web hook</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="AuthenticationType">ClientCertificate</Item>
<Item Key="AllowInsecureAuthInProduction">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
</CryptographicKeys>
...
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
OAuth2 ベアラー認証
ベアラー トークン認証は、 OAuth2.0 Authorization Framework: Bearer Token Usage (RFC 6750) で定義されています。 ベアラー トークン認証では、Azure AD B2C は認証ヘッダーにトークンを含む HTTP 要求を送信します。
Authorization: Bearer <token>
ベアラー トークンは不透明な文字列です。 JWT アクセス トークン、または REST API が Azure AD B2C が承認ヘッダーで送信することを想定している任意の文字列を指定できます。 Azure AD B2C では、次の種類がサポートされています。
- ベアラー トークン。 RESTful 技術プロファイルでベアラー トークンを送信できるようにするには、最初にベアラー トークンを取得してから、RESTful 技術プロファイルで使用する必要があります。
- 静的ベアラー トークン。 REST API が長期的なアクセス トークンを発行する場合は、この方法を使用します。 静的ベアラー トークンを使用するには、ポリシー キーを作成し、RESTful 技術プロファイルからポリシー キーへの参照を作成します。
OAuth2 ベアラーの使用
次の手順では、クライアント資格情報を使用してベアラー トークンを取得し、REST API 呼び出しの Authorization ヘッダーに渡す方法を示します。
ベアラー トークンを格納する要求を定義する
要求は、Azure AD B2C ポリシーの実行中にデータの一時的なストレージを提供します。 要求スキーマは、要求を宣言する場所です。 アクセス トークンは、後で使用するために要求に格納する必要があります。
- ポリシーの拡張ファイルを開きます。 たとえば、
SocialAndLocalAccounts/
TrustFrameworkExtensions.xml
のようにします。 - BuildingBlocks 要素を検索します。 要素が存在しない場合は、追加します。
- ClaimsSchema 要素を見つけます。 要素が存在しない場合は、追加します。
- ClaimsSchema 要素に次の要求を追加します。
<ClaimType Id="bearerToken">
<DisplayName>Bearer token</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="grant_type">
<DisplayName>Grant type</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="scope">
<DisplayName>scope</DisplayName>
<DataType>string</DataType>
</ClaimType>
アクセス トークンの取得
フェデレーション ID プロバイダーからアクセス トークンを取得するには、アクセス トークンを返す REST API を呼び出すか、ROPC フローを使用するか、クライアント資格情報フローを使用します。 クライアント資格情報フローは、通常、ユーザーとすぐに対話することなく、バックグラウンドで実行する必要があるサーバー間の対話に使用されます。
警告
ROPC フローは "使用しない" ことをお勧めします。 このフローでは、アプリケーションで非常に高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、より安全なフローが実行可能ではない場合にのみ使用してください。
Microsoft Entra アクセス トークンの取得
次の例では、REST API 技術プロファイルを使用して、HTTP 基本認証として渡されたクライアント資格情報を使用して Microsoft Entra トークン エンドポイントに要求を行います。 詳しくは、「Microsoft ID プラットフォームと OAuth 2.0 クライアント資格情報フロー」をご覧ください。
技術プロファイルが Microsoft Entra ID と対話してアクセス トークンを取得するには、アプリケーションを登録する必要があります。 Azure AD B2C は Microsoft Entra プラットフォームに依存しています。 アプリは、Azure AD B2C テナントまたは管理する任意の Microsoft Entra テナントで作成できます。 アプリケーションを登録するには:
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- 左側のメニューで、Microsoft Entra ID を選択します。 または、[ すべてのサービス ] を選択し、 Microsoft Entra ID を検索して選択します。
- [アプリの登録] を選択し、[新しい登録] を選択します。
- アプリケーションの名前を入力します。 たとえば、 Client_Credentials_Auth_app。
- [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。
- 登録 を選択します。
- アプリケーション (クライアント) ID を記録します。
クライアント資格情報フローの場合は、アプリケーション シークレットを作成する必要があります。 クライアント シークレットは、アプリケーション パスワードとも呼ばれます。 アプリケーションでは、シークレットを使用してアクセス トークンを取得します。
- [Microsoft Entra ID - アプリの登録] ページで、作成したアプリケーション (Client_Credentials_Auth_appなど) を選択します。
- 左側のメニューの [ 管理] で、[ 証明書とシークレット] を選択します。
- 新しいクライアント シークレットを選択します。
- [説明] ボックスに、クライアント シークレットの説明を入力します。 たとえば、clientsecret1 のようにします。
- [有効期限] で、シークレットが有効な期間を選択してから、 [追加] を選択します。
- クライアント アプリケーションのコードで使用できるように、シークレットの値を記録します。 このページからの移動後は、このシークレットの値は "二度と表示されません"。 アプリケーションのコード内で、この値をアプリケーション シークレットとして使用します。
Azure AD B2C ポリシー キーを作成する
以前に Azure AD B2C テナントに記録したクライアント ID とクライアント シークレットの値を格納する必要があります。
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
- [概要] ページで、[Identity Experience Framework] を選びます。
- [ポリシー キー] を選択し、[追加] を選びます。
-
[オプション] で、[
Manual
] を選択します。 - ポリシー キーの 名前 を入力
SecureRESTClientId
。 プレフィックスB2C_1A_
がキーの名前に自動的に追加されます。 - [シークレット] に、前に記録したクライアント ID を入力します。
- [ キーの使用法] で、[
Signature
] を選択します。 - を選択してを作成します。
- 次の設定で別のポリシー キーを作成します。
-
名前:
SecureRESTClientSecret
。 - シークレット: 前に記録したクライアント シークレットを入力します
-
名前:
ServiceUrl の場合は、your-tenant-name を Microsoft Entra テナントの名前に置き換えます。 使用可能なすべてのオプションについては、 RESTful 技術プロファイル のリファレンスを参照してください。
<TechnicalProfile Id="REST-AcquireAccessToken">
<DisplayName></DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://login.microsoftonline.com/your-tenant-name.onmicrosoft.com/oauth2/v2.0/token</Item>
<Item Key="AuthenticationType">Basic</Item>
<Item Key="SendClaimsIn">Form</Item>
</Metadata>
<CryptographicKeys>
<Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_SecureRESTClientId" />
<Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_SecureRESTClientSecret" />
</CryptographicKeys>
<InputClaims>
<InputClaim ClaimTypeReferenceId="grant_type" DefaultValue="client_credentials" AlwaysUseDefaultValue="true" />
<InputClaim ClaimTypeReferenceId="scope" DefaultValue="https://graph.microsoft.com/.default" AlwaysUseDefaultValue="true" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="bearerToken" PartnerClaimType="access_token" />
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
注
他の技術プロファイルで grant_type
または scope
要求を使用する場合は、 DefaultValue
も指定し、 AlwaysUseDefaultValue="true"
を使用して、不適切な値に対するバインドで競合が発生する可能性を回避することをお勧めします。
ベアラー トークン認証を使用するように REST 技術プロファイルを変更する
カスタム ポリシーでベアラー トークン認証をサポートするには、次の手順を使用して REST API 技術プロファイルを変更します。
作業ディレクトリで、 TrustFrameworkExtensions.xml 拡張ポリシーファイルを開きます。
<TechnicalProfile>
を含むId="REST-API-SignUp"
ノードを検索します。<Metadata>
要素を探します。次のように、 AuthenticationType を Bearer に変更します。
<Item Key="AuthenticationType">Bearer</Item>
次のように、 UseClaimAsBearerToken を bearerToken に変更または追加します。 bearerToken は、ベアラー トークンが取得される要求の名前です (
REST-AcquireAccessToken
からの出力要求)。<Item Key="UseClaimAsBearerToken">bearerToken</Item>
前の手順の要求を入力要求として追加します。
<InputClaim ClaimTypeReferenceId="bearerToken"/>
ポリシーを更新すると、技術プロファイルは次の XML コードのようになります。
<ClaimsProvider>
<DisplayName>REST APIs</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="REST-GetProfile">
<DisplayName>Get user extended profile Azure Function web hook</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="AuthenticationType">Bearer</Item>
<Item Key="UseClaimAsBearerToken">bearerToken</Item>
<Item Key="AllowInsecureAuthInProduction">false</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="bearerToken"/>
</InputClaims>
...
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
REST 技術プロファイルを呼び出す
REST-GetProfile
技術プロファイルを呼び出すには、まず、REST-AcquireAccessToken
技術プロファイルを使用して Microsoft Entra アクセス トークンを取得する必要があります。 次の例は、検証技術プロファイルから REST-GetProfile
技術プロファイルを呼び出す方法を示 しています。
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
<ValidationTechnicalProfile ReferenceId="REST-GetProfile" />
</ValidationTechnicalProfiles>
次の例は、REST-GetProfile
またはサブ体験から技術プロファイルを呼び出す方法を示しています。
<OrchestrationSteps>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="REST-AcquireAccessTokens" TechnicalProfileReferenceId="REST-AcquireAccessToken" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="REST-GetProfile" TechnicalProfileReferenceId="REST-GetProfile" />
</ClaimsExchanges>
</OrchestrationStep>
</OrchestrationSteps>
静的 OAuth2 ベアラーの使用
OAuth2 ベアラー トークン ポリシー キーを追加する
OAuth2 ベアラー トークンを使用して REST API 技術プロファイルを構成するには、REST API 所有者からアクセス トークンを取得します。 次に、ベアラー トークンを格納する次の暗号化キーを作成します。
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
- [概要] ページで、[Identity Experience Framework] を選びます。
- [ポリシー キー] を選択してから、[追加] を選択します。
-
[オプション] で、[
Manual
] を選択します。 - ポリシー キーの名前を入力します。 たとえば、
RestApiBearerToken
のようにします。 プレフィックスB2C_1A_
がキーの名前に自動的に追加されます。 - [ シークレット] に、前に記録したクライアント シークレットを入力します。
- [ キーの使用法] で、[
Encryption
] を選択します。 - を選択してを作成します。
ベアラー トークン ポリシー キーを使用するように REST API 技術プロファイルを構成する
必要なキーを作成したら、ベアラー トークンを参照するように REST API 技術プロファイル メタデータを構成します。
- 作業ディレクトリで、拡張ポリシー ファイル (TrustFrameworkExtensions.xml) を開きます。
- REST API 技術プロファイルを検索します。 たとえば、
REST-ValidateProfile
やREST-GetProfile
などです。 -
<Metadata>
要素を探します。 -
AuthenticationType を
Bearer
に変更します。 -
AllowInsecureAuthInProduction を
false
に変更します。 - 終了
</Metadata>
要素の直後に、次の XML スニペットを追加します。<CryptographicKeys> <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" /> </CryptographicKeys>
次の XML スニペットは、ベアラー トークン認証で構成された RESTful 技術プロファイルの例です。
<ClaimsProvider>
<DisplayName>REST APIs</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="REST-GetProfile">
<DisplayName>Get user extended profile Azure Function web hook</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="AuthenticationType">Bearer</Item>
<Item Key="AllowInsecureAuthInProduction">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
</CryptographicKeys>
...
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
REST-AcquireAccessToken
を呼び出すサインアップ技術プロファイルに検証技術プロファイル参照を追加します。 この動作は、検証が成功した後にのみ、Azure AD B2C がディレクトリにアカウントを作成するために移動することを意味します。
例えば次が挙げられます。
```XML
<ValidationTechnicalProfiles>
....
<ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
....
</ValidationTechnicalProfiles>
API キー認証
一部のサービスは、"API キー" メカニズムを使用して、呼び出し元に HTTP ヘッダーまたは HTTP クエリ パラメーターとして一意のキーを含めることを要求することにより、開発中に HTTP エンドポイントへのアクセスを難読化します。
Azure Functions に対しては、お使いの API コネクタのcode
に をクエリ パラメーターとして含めることで、これを実現できます。 たとえば、https://contoso.azurewebsites.net/api/endpoint
?code=0123456789
です。
これは、運用環境で単独で使用する必要があるメカニズムではありません。 そのため、基本認証または証明書認証の構成は常に必要です。 開発目的で認証方法 (推奨されません) を実装しない場合は、API コネクタ構成で "基本" 認証を選択し、 username
に一時的な値を使用し、適切な承認を実装している間に API が無視できる password
できます。
API キーは、REST API エンドポイントにアクセスするためにユーザーを認証するために使用される一意の識別子です。 キーはカスタム HTTP ヘッダーで送信されます。 たとえば、 Azure Functions HTTP トリガー では、 x-functions-key
HTTP ヘッダーを使用して要求元を識別します。
API キーのポリシー キーを追加する
API キー認証を使用して REST API 技術プロファイルを構成するには、次の暗号化キーを作成して API キーを格納します。
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
- [概要] ページで、[Identity Experience Framework] を選びます。
- [ポリシー キー] を選択してから、[追加] を選択します。
- [オプション] で、[手動] を選択します。
- [名前] に「RestApiKey」と入力します。 プレフィックス B2C_1A_ は自動的に追加される場合があります。
- [ シークレット ] ボックスに、REST API キーを入力します。
- [ キーの使用法] で、[ 暗号化] を選択します。
- を選択してを作成します。
API キー認証を使用するように REST API 技術プロファイルを構成する
必要なキーを作成したら、資格情報を参照するように REST API 技術プロファイル メタデータを構成します。
- 作業ディレクトリで、拡張ポリシー ファイル (TrustFrameworkExtensions.xml) を開きます。
- REST API 技術プロファイルを検索します。 たとえば、
REST-ValidateProfile
やREST-GetProfile
などです。 -
<Metadata>
要素を探します。 -
AuthenticationType を
ApiKeyHeader
に変更します。 -
AllowInsecureAuthInProduction を
false
に変更します。 - 終了
</Metadata>
要素の直後に、次の XML スニペットを追加します。<CryptographicKeys> <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" /> </CryptographicKeys>
暗号化キーの ID によって HTTP ヘッダーが定義されます。 この例では、API キーは x-functions-key として送信されます。
次の XML スニペットは、API キー認証を使用して Azure 関数を呼び出すように構成された RESTful 技術プロファイルの例です。
<ClaimsProvider>
<DisplayName>REST APIs</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="REST-GetProfile">
<DisplayName>Get user extended profile Azure Function web hook</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="AuthenticationType">ApiKeyHeader</Item>
<Item Key="AllowInsecureAuthInProduction">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
</CryptographicKeys>
...
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
関連コンテンツ
- サンプルの使用を開始します。
- RESTful 技術プロファイル要素の詳細については、カスタム ポリシー リファレンスを参照してください。