次の方法で共有


Microsoft Entra External ID セルフサービス サインアップのユーザー フローで API コネクタとして使用される API をセキュリティで保護する

適用対象: 白いチェック マークが付いた緑色の円。 ワークフォース テナント 灰色の X 記号が付いた白い円。 外部テナント (詳細)

Microsoft Entra External ID セルフサービス サインアップのユーザー フロー内で REST API を統合する場合は、認証を使用して REST API エンドポイントを保護する必要があります。 REST API 認証により、Microsoft Entra ID などの適切な資格情報を備えたサービスだけが REST API エンドポイントを呼び出すことができます。 この記事では、REST API をセキュリティで保護する方法について説明します。

必須コンポーネント

チュートリアル: サインアップ ユーザー フロー ガイドに API コネクタを追加する 」の手順を完了します。

API エンドポイントを保護するには、HTTP 基本認証または HTTPS クライアント証明書認証を使用します。 どちらの場合も、API エンドポイントを呼び出すときに Microsoft Entra ID によって使用される資格情報を指定します。 次に、API エンドポイントは資格情報を確認し、承認の決定を行います。

HTTP 基本認証

HTTP 基本認証は RFC 2617 で定義されています。 基本認証は、次のように動作します。Microsoft Entra ID によって、クライアントの資格情報 (usernamepassword) が Authorization ヘッダーに含まれた HTTP 要求が送信されます。 資格情報は、Base64 でエンコードされた文字列 username:password として書式設定されます。 その後、お使いの API によってこれらの値がチェックされ、他の承認決定が実行されます。

HTTP 基本認証を使用して API コネクタを構成するには、次の手順を実行します。

  1. Microsoft Entra 管理センターに、少なくともユーザー管理者としてサインインします。
  2. Entra ID>外部ID>概要 に移動します。
  3. [すべての API コネクタ] を選択し、構成する API コネクタを選択します。
  4. [認証の種類] で 、[基本] を選択します。
  5. REST API エンドポイントの ユーザー名パスワード を指定します。 API コネクタの基本的な認証構成のスクリーンショット。
  6. [保存] を選択します

HTTPS クライアント証明書認証

クライアント証明書認証は、相互証明書ベースの認証です。 クライアントである Microsoft Entra ID は、SSL ハンドシェイクの一部として ID を証明するクライアント証明書をサーバーに提供します。 お使いの API によって、証明書が有効なクライアント (Microsoft Entra ID など) に属していることが確認され、承認の決定が実行されます。 クライアント証明書は、X.509 デジタル証明書です。

重要

運用環境では、この証明書は証明機関によって署名されている必要があります。

証明書を作成する

証明書を作成するには、 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 コマンドレットを使用して証明書を生成します。

  1. この 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"
    
  2. Windows コンピューターで、[ユーザー証明書の管理] を検索して選択します

  3. [ 証明書 - 現在のユーザー] で、[ 個人用>Certificates>yourappname.yourtenant.onmicrosoft.com を選択します。

  4. 証明書を選択し、 アクション>すべてのタスク>Export を選択します。

  5. [次へ>次へ] を選択し、秘密キーをエクスポートします>次へ

  6. [ ファイル形式のエクスポート] の既定値をそのまま使用し、[ 次へ] を選択します。

  7. [パスワード] オプションを有効にし、証明書のパスワードを入力して、[次へ] を選択します。

  8. 証明書を保存する場所を指定するには、[ 参照 ] を選択し、任意のディレクトリに移動します。

  9. [ 名前を付けて保存 ] ウィンドウで、 ファイル名を入力し、[保存] を選択 します

  10. [ 次へ>完了] を選択します。

Azure AD B2C で .pfx ファイルのパスワードを受け入れるには、Windows 証明書ストアのエクスポート ユーティリティで、AES256-SHA256 ではなく、TripleDES-SHA1 オプションを使用してパスワードを暗号化する必要があります。

API コネクタを構成する

クライアント証明書認証を使用して API コネクタを構成するには、次の手順を実行します。

  1. Microsoft Entra 管理センターに、少なくともユーザー管理者としてサインインします。
  2. Entra ID>外部ID>概要 に移動します。
  3. [すべての API コネクタ] を選択し、構成する API コネクタを選択します。
  4. [認証の種類] で [証明書] を選択します。
  5. [ 証明書のアップロード ] ボックスで、秘密キーを含む証明書の .pfx ファイルを選択します。
  6. [ パスワードの入力 ] ボックスに、証明書のパスワードを入力します。 API コネクタの証明書認証構成のスクリーンショット。
  7. [保存] を選択します

承認の決定を実行する

API エンドポイントを保護するために、API では、送信されたクライアント証明書に基づいて承認が実装される必要があります。 Azure App Service と Azure Functions については、API コードから証明書を有効にして検証する方法については、TLS 相互認証の構成に関するページを参照してください。 または、任意の API サービスの前のレイヤーとして Azure API Management を使用して、 クライアント証明書のプロパティ を目的の値と照合することもできます。

証明書を書き換える

証明書の有効期限が切れたときのアラーム アラートを設定することをお勧めします。 新しい証明書を生成し、使用されている証明書の有効期限が切れそうになったら、この記事の手順を繰り返す必要があります。 新しい証明書の使用を "ロール" するために、新しい証明書がデプロイされている間、一時的に、お使いの API サービスで引き続き古い証明書と新しい証明書を受け入れることができます。

既存の API コネクタに新しい証明書をアップロードするには、API コネクタで API コネクタを選択し、[ 新しい証明書のアップロード] を選択します。 Microsoft Entra ID は、有効期限が切れていない、および開始日が経過した、最近アップロードされた証明書を自動的に使用します。

新しい証明書が既に存在する場合のスクリーンショット。

API キー認証

一部のサービスは、"API キー" メカニズムを使用して、呼び出し元に HTTP ヘッダーまたは HTTP クエリ パラメーターとして一意のキーを含めることを要求することにより、開発中に HTTP エンドポイントへのアクセスを難読化します。 Azure Functions の場合は、API コネクタのcode にクエリ パラメーターとしてを含めます。 たとえば、https://contoso.azurewebsites.net/api/endpoint?code=0123456789 です。

運用環境では、このメカニズムを単独で使用しないでください。 そのため、基本認証または証明書認証の構成は常に必要です。 開発上の目的により、いずれの認証方法も実装しない場合 (推奨されません)、API コネクタの構成で "基本" 認証を選択し、適切な承認を実装する間、API が無視できる一時的な値を usernamepassword に使用します。

次のステップ