次の方法で共有


Azure Active Directory B2C を使用して SwissID アカウントでサインアップとサインインを設定する

重要

2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください

開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。

この記事では、Azure Active Directory B2C (Azure AD B2C) を使用して、アプリケーションで SwissID アカウントを使用して顧客にサインアップとサインインを提供する方法について説明します。 OpenID Connect プロトコルを使用して、ユーザー フローまたはカスタム ポリシーに SwissID を追加します。 詳細については、「 SwissID 統合ガイドライン - OpenID Connect」を参照してください。

[前提条件]

SwissID アプリケーションを作成する

Azure AD B2C で SwissID アカウントを持つユーザーのサインインを有効にするには、アプリケーションを作成する必要があります。 SwissID アプリケーションを作成するには、次の手順に従います。

  1. SwissID Business Partner サポートにお問い合わせください。

  2. SwissID にサインアップした後、Azure AD B2C テナントに関する情報を入力します。

    リダイレクト URI https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp URI を指定します。 カスタム ドメインを使用する場合は、「https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp」と入力します。 your-tenant-nameをテナントの名前に置き換え、your-domain-nameをカスタム ドメインに置き換えます。
    トークン エンドポイントの認証方法 client_secret_post
  3. アプリが登録されると、SwissID によって次の情報が提供されます。 この情報を使用して、ユーザー フローまたはカスタム ポリシーを構成します。

    環境 SwissID OpenId の既知の構成エンドポイント。 たとえば、https://login.sandbox.pre.swissid.ch/idp/oauth2/.well-known/openid-configuration のようにします。
    クライアントID SwissID クライアント ID。 たとえば、00001111-aaaa-2222-bbbb-3333cccc4444 のようにします。
    パスワード SwissID クライアント シークレット。

ID プロバイダーとして SwissID を構成する

  1. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。

  2. Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。

  3. [ID プロバイダー] を選択し、[新しい OpenID Connect プロバイダー] を選択します。

  4. 名前を入力します。 たとえば、「 SwissID」と入力します。

  5. [メタデータ URL] に、URL SwissID OpenId の既知の構成エンドポイントを入力します。 例えば次が挙げられます。

    https://login.sandbox.pre.swissid.ch/idp/oauth2/.well-known/openid-configuration
    
  6. [クライアント ID] に、SwissID クライアント ID を入力します。

  7. クライアント シークレットの場合は、SwissID クライアント シークレットを入力します。

  8. [スコープ] に、openid profile emailを入力します。

  9. [応答の種類] と [応答モード] の既定値のままにします。

  10. (省略可能) ドメイン ヒントに「 swissid.com」と入力します。 詳しくは、「Azure Active Directory B2C を使用した直接サインインの設定」をご覧ください。

  11. [ ID プロバイダー要求マッピング] で、次の要求を選択します。

    • ユーザー ID: sub
    • 指定された名前: given_name
    • : family_name
    • 電子メール: 電子メール
  12. 保存 を選択します。

ユーザー フローに SwissID ID プロバイダーを追加する

この時点で、SwissID ID プロバイダーは設定されていますが、どのサインイン ページでもまだ使用できません。 ユーザー フローに SwissID ID プロバイダーを追加するには:

  1. Azure AD B2C テナントで、[ ユーザー フロー] を選択します。
  2. SwissID ID プロバイダーを追加するユーザー フローをクリックします。
  3. [ソーシャル ID プロバイダー] で、[SwissID] を選択します。
  4. 保存 を選択します。
  5. ポリシーをテストするには、[ ユーザー フローの実行] を選択します。
  6. [アプリケーション] で、以前に登録した testapp1 という名前の Web アプリケーションを選択します。 応答 URLhttps://jwt.msが表示されます。
  7. [ ユーザー フローの実行 ] ボタンを選択します。
  8. サインアップまたはサインイン ページで、SwissID を選択して SwissID アカウントでサインインします。

サインイン プロセスが成功すると、ブラウザーは https://jwt.ms にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。

ポリシー キーを作成する

SwissID から受信したクライアント シークレットを Azure AD B2C テナントに格納する必要があります。

  1. Azure portal にサインインします。
  2. ご自分の Azure AD B2C テナントが含まれるディレクトリを必ず使用してください。 上部のメニューで [ディレクトリ + サブスクリプション ] フィルターを選択し、テナントを含むディレクトリを選択します。
  3. Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
  4. [概要] ページで、[Identity Experience Framework] を選びます。
  5. [ポリシー キー] を選択し、[追加] を選びます。
  6. [オプション] で、[Manual] を選択します。
  7. ポリシー キーの名前を入力します。 たとえば、SwissIDSecret のようにします。 プレフィックス B2C_1A_ がキーの名前に自動的に追加されます。
  8. [ シークレット] に、SwissID クライアント シークレットを入力します。
  9. [ キーの使用法] で、[ Signature] を選択します。
  10. Create をクリックしてください。

ID プロバイダーとして SwissID を構成する

ユーザーが SwissID アカウントを使用してサインインできるようにするには、Azure AD B2C がエンドポイント経由で通信できるクレーム プロバイダーとしてアカウントを定義する必要があります。 エンドポイントは、特定のユーザーが認証されたことを確認するために Azure AD B2C によって使用されるクレームのセットを提供します。

SwissID アカウントは、ポリシーの拡張ファイルの ClaimsProviders 要素に追加することで、要求プロバイダーとして定義できます。

  1. TrustFrameworkExtensions.xmlを開きます。

  2. ClaimsProviders 要素を検索します。 存在しない場合は、ルート要素の下に追加します。

  3. 次のように新しい ClaimsProvider を追加します。

    <ClaimsProvider>
      <Domain>SwissID.com</Domain>
      <DisplayName>SwissID</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="SwissID-OpenIdConnect">
          <DisplayName>SwissID</DisplayName>
          <Protocol Name="OpenIdConnect" />
          <Metadata>
            <Item Key="METADATA">https://login.sandbox.pre.swissid.ch/idp/oauth2/.well-known/openid-configuration</Item>
            <Item Key="client_id">Your Swiss client ID</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile email</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_SwissIDSecret" />
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="email" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
            <OutputClaimsTransformation ReferenceId="CreateDisplayName" />
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. client_idを SwissID クライアント ID に設定します。

  5. ファイルを保存します。

ユーザー体験を追加する

この時点で、ID プロバイダーは設定されていますが、どのサインイン ページでもまだ使用できません。 独自のカスタム ユーザー体験がない場合は、既存のテンプレート ユーザー体験の複製を作成します。それ以外の場合は、次の手順に進みます。

  1. スターター パックから TrustFrameworkBase.xml ファイルを開きます。
  2. を含む Id="SignUpOrSignIn" 要素の内容全体を検索してコピーします。
  3. TrustFrameworkExtensions.xml を開き、UserJourneys 要素を見つけます。 要素が存在しない場合は、要素を追加します。
  4. UserJourneys 要素の子としてコピーした UserJourney 要素の内容全体を貼り付けます。
  5. ユーザージャーニーの ID を変更します。 たとえば、Id="CustomSignUpSignIn" のようにします。

ID プロバイダーをユーザー体験に追加する

これでユーザー体験が作成されたので、新しい ID プロバイダーをユーザー体験に追加します。 最初にサインイン ボタンを追加し、そのボタンをアクションにリンクします。 あなたが以前に作成した技術プロファイルがこのアクションです。

  1. ユーザー体験に Type="CombinedSignInAndSignUp"または Type="ClaimsProviderSelection" を含むオーケストレーション ステップ要素を見つけます。 通常は、オーケストレーションの最初の手順です。 ClaimsProviderSelections 要素には、ユーザーがサインインできる ID プロバイダーの一覧が含まれています。 要素の順序は、ユーザーに表示されるサインイン ボタンの順序を制御します。 ClaimsProviderSelection XML 要素を追加します。 TargetClaimsExchangeId の値をフレンドリ名に設定します。

  2. 次のオーケストレーション手順で、 ClaimsExchange 要素を追加します。 Id をターゲット要求交換 ID の値に設定します。TechnicalProfileReferenceId の値を、先ほど作成した技術プロファイルの ID に更新します。

次の XML は、ID プロバイダーを使用したユーザー体験の最初の 2 つのオーケストレーション手順を示しています。

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="SwissIDExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="SwissIDExchange" TechnicalProfileReferenceId="SwissID-OpenIdConnect" />
  </ClaimsExchanges>
</OrchestrationStep>

依存当事者ポリシーを構成する

証明書利用者ポリシー ( SignUpSignIn.xmlなど) は、Azure AD B2C が実行するユーザー体験を指定します。 依存するパーティー内で DefaultUserJourney 要素を検索します。 追加した ID プロバイダーのユーザージャーニー ID と一致するように ReferenceId を更新します。

次の例では、 CustomSignUpSignIn ユーザー体験の ReferenceIdCustomSignUpSignInに設定されています。

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

カスタム ポリシーをアップロードする

  1. Azure portal にサインインします。
  2. ポータル のツール バーで [ディレクトリ + サブスクリプション ] アイコンを選択し、Azure AD B2C テナントが含まれているディレクトリを選択します。
  3. Azure portal で、 [Azure AD B2C] を検索して選択します。
  4. [ ポリシー] で、[ Identity Experience Framework] を選択します。
  5. [ カスタム ポリシーのアップロード] を選択し、変更した 2 つのポリシー ファイルを次の順序でアップロードします。拡張機能ポリシー ( TrustFrameworkExtensions.xmlなど)、証明書利用者ポリシー ( SignUpSignIn.xmlなど)。

カスタム ポリシーをテストする

  1. 依存するパーティポリシーを選択します (例: B2C_1A_signup_signin)。
  2. [ アプリケーション] で、 以前に登録した Web アプリケーションを選択します。 応答 URLhttps://jwt.msが表示されます。
  3. [ 今すぐ実行 ] ボタンを選択します。
  4. サインアップまたはサインイン ページで、SwissID を選択して SwissID アカウントでサインインします。

サインイン プロセスが成功すると、ブラウザーは https://jwt.ms にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。

運用環境に移行する

SwissID IdP は、実稼働前環境と運用環境を提供します。 この記事で説明する構成では、実稼働前環境を使用します。 運用環境を使用するには、次の手順に従います。

  1. 運用環境については、SwissId サポートにお問い合わせください。
  2. 既知の構成エンドポイントの URI を使用して、ユーザー フローまたはカスタム ポリシーを更新します。

次のステップ

アプリケーションに SwissID トークンを渡す方法について説明します。