OpenID ConnectとSAMLサインイン

Microsoft、Google、Facebookのほかに、ポータルは OpenID Connect や SAML 2.0 のアイデンティティプロバイダーからもサインインできます:Okta、Auth0、Microsoft Entra External ID、顧客またはパートナーのEntraテナント、AD FS、Ping、Google Workspaceなどです。設定する各プロバイダーはサインインページのボタンだけで、コードは不要です。

これらのプロバイダーのいずれかを通じたサインインは、MicrosoftやGoogleのサインインと同様に、連絡先としてマッチング、リンク、または登録されます。内部ユーザー(システムユーザー)はMicrosoftでサインインします — Entra IDサインイン設定を参照してください。

つけて

外部ユーザー向けにテンプレートから作成されたプロジェクトにはすでに Program.csが入っています。このシステムは Authentication:OpenIdConnect および Authentication:Saml2で設定されたすべてのプロバイダーを読み取り、設定が完了するまでは追加しません:

SAMLは PowerPortalsPro.Identity.Saml2 パッケージから来ており、これらのプロジェクトはそれを参照しています。この機能の前に作成されたプロジェクトは、呼び出しとパッケージの追加が必要です。

プロバイダーに登録するアドレス

各プロバイダーには名前があり、以下の例でその構成セクションのキー ContosoOkta 、プロバイダーが送り返すアドレスはその名前から小文字で作成されます。ポータルが動作する各ホストごとに正確に一度ずつ登録してください。

何だって 住所
OpenID Connect リダイレクト URI https://your-portal.example.com/signin-{name}
SAMLアサーションコンシューマーサービス(HTTP-POST) https://your-portal.example.com/saml2/{name}/acs
SAMLエンティティID(オーディエンス) https://your-portal.example.com/saml2/{name}
ポータルのSAMLメタデータ https://your-portal.example.com/saml2/{name}/metadata

アドレスはすべての言語で同じです。別の言語のページ( /es/… )でサインインが始まると、サイト自身のアドレスを経由して、その言語で開始ページに戻ってきます。

OpenID Connectプロバイダー

Authentication:OpenIdConnectの下に各プロバイダーごとにセクションを追加してください。クライアントはローカルのユーザーシークレットと展開後のKey Vaultで秘密に保ちます。

舞台設定 それは何か
DisplayNameサインインボタンに表示されている名前です。プロバイダー名がデフォルトになります。
Authority提供者の発行者 — その /.well-known/openid-configuration の住所。 MetadataAddress が示されていない限り必須です。
MetadataAddressディスカバリードキュメントの住所で、別の場所で公開するプロバイダーの住所です。
ClientId, ClientSecretポータルのクライアントIDとプロバイダーの秘密情報。必須です。
Scopesopenid、profile、email以外にも望遠鏡をリクエストしてください。これらは常に求められます。
CallbackPathURIの経路をリダイレクトするだけでは、 /signin-{name} ではダメです。
TrustedEmailDomainsこのプロバイダーが信頼されているメールドメイン — 以下で 「どのアドレスが信頼されているか 」を参照してください。デフォルトで空です。App Serviceの設定では、カンマ区切って書いてください。
GetClaimsFromUserInfoEndpointプロバイダーのユーザー情報エンドポイントからプロファイルとIDトークンの両方を読むかどうか。デフォルトではオンにしています。プロバイダーによってはIDトークンにメールアドレスが含まれていない場合もあります。

ポータルはPKCEによる認証コードフローを使用し、Identityの外部クッキーを通じてサインインし、トークンは保持しません。 subのIDと、 email、 given_name 、 family_nameの住所と名前を読み取ります。

Okta (OpenID Connect)

  1. アプリ統合を作成します: OIDC - OpenID Connect( Web Application型)で、 認証コード 付与を得ています。
  2. ポータルのリダイレクトURIを サインインリダイレクトURIとして追加し、サインイン可能な人やグループを割り当て、クライアントIDとシークレットをコピーします。
  3. 権限者はあなたの認可サーバーの発行者であり、例えば https://contoso.okta.com/oauth2/default。

Auth0

  1. 通常のWebアプリケーション型のアプリケーションを作成します。
  2. ポータルのリダイレクトURIを 許可されたコールバックURLに追加し、クライアントIDとシークレットをコピーします。
  3. 権限はテナントのドメイン(例: https://contoso.us.auth0.com/)やカスタムドメインです。

Microsoft Entra External ID

  1. 外部テナントで、ポータルのリダイレクトURIを使ってアプリケーションを Web リダイレクトURIとして登録し、クライアントシークレットを追加します。
  2. サインアップとサインインのユーザーフローを作成し、アプリケーションを追加してください。
  3. 権限はhttps://<tenant subdomain>.ciamlogin.com/<tenant id>/v2.0です。ユーザーフローがアカウント作成前に各アドレスを認証する場合(パスワード付きメールとワンタイムパスコードのメールの両方が認証されます)、これは自分の顧客のために運営するIDプロバイダーであり、TrustedEmailDomains*可能です。

顧客またはパートナーのEntraテナント

マルチテナントのMicrosoftボタンなしで、従業員が自分の仕事用アカウントでサインインすべき組織の場合:

  1. テナント内で、ポータルのリダイレクトURIを使い、 単一のテナント アプリケーションを Web リダイレクトURIとして登録し、クライアントシークレットを追加します。
  2. 権限は https://login.microsoftonline.com/<their tenant id>/v2.0。
  3. TrustedEmailDomainsにドメインを記載し、他の場所の住所はまずメールで確認します。テナントのIDはMicrosoftボタンと同様にセッションに届きます。Entra自身の認証クレーム(xms_edov、verified_primary_email)はプロバイダーから取得されるのではなく、送信されるクレームを管理しているのはその背後にあるテナントです。

SAML 2.0プロバイダー

Authentication:Saml2の下に各プロバイダーごとにセクションを追加します。プロバイダーのメタデータはポータルにサインオンアドレスと応答に署名される証明書を提供します。毎日読み返されるため、プロバイダーがロールオーバーした証明書が取得されます。

舞台設定 それは何か
DisplayNameサインインボタンに表示されている名前です。プロバイダー名がデフォルトになります。
MetadataAddressアイデンティティプロバイダーのメタデータのアドレス。必須であり、 httpsでなければなりません。
IdentityProviderEntityIdアイデンティティプロバイダーのエンティティIDで、応答はそのエンティティIDによって発行されなければなりません。デフォルトはメタデータ名のエンティティです。
EntityIdポータル自身のエンティティIDです。リクエストが届いたホストでデフォルトで https://{host}/saml2/{name} されます。ポータルが複数のホストで応答した際に設定し、プロバイダーで1つの登録を共有します。
CallbackPath, MetadataPathアサーション、コンシューマーサービスのパス、そしてメタデータのパス、 /saml2/{name}/acs や /saml2/{name}/metadata ではうまくいかない場合。
TrustedEmailDomainsこのプロバイダーが信頼されているメールドメイン — 以下で 「どのアドレスが信頼されているか 」を参照してください。デフォルトで空です。App Serviceの設定では、カンマ区切って書いてください。
AllowIdentityProviderInitiatedプロバイダーがサインインを受け入れます — 誰かが自分のプロバイダーのダッシュボードのタイルからポータルを開きます。デフォルトでオフです。ポータルの外部ログインページに進み、その後RelayState(/orders または ReturnUrl=/orders)で命名されたローカルページに移動します。各サーバーごとに1回ずつ応答が受け入れられます。
RequireHttpsMetadataMetadataAddresshttpsしなければならないかどうか。デフォルトでオンにし、自分のマシンで動作するプロバイダーを試すためだけにオフにしてください。

応答は、プロバイダーのメタデータ内の証明書によって署名されなければなりません。これはそのエンティティIDによって発行され、ポータルのエンティティIDに対して発行され、アサーション・コンシューマーサービスに送信され、同じブラウザが行ったリクエストに応じて応答されます。NameIDはアカウントを識別するため、 永続的 であるかメールアドレスでなければなりません。一時的なメールアドレスは拒否されます。アドレスと名前は、プロバイダーが一般的に使用する属性から読み取られます: email、 mail、 emailaddress 、WS-Federationの主張名、 givenName または firstName 、 surname または lastNameです。

Microsoft Entra ID (enterprise application)

  1. エンタープライズアプリケーションを作成し、 ギャラリーに見つからない他のアプリケーションを統合し、 SAML シングルサインオンを選択します。
  2. 識別子(エンティティID)をポータルのエンティティIDに設定し、返信URLをアサーションコンシューマーサービスに設定します。
  3. App FederationのメタデータURLをMetadataAddressにコピーし、サインインできるユーザーやグループを割り当ててください。

オクタ(SAML)

  1. SAML 2.0型のアプリ統合を作成します。
  2. シングルサインオンURLをアサーションコンシューマーサービスに、Audience URI(SPエンティティID)をポータルのエンティティIDに設定します。PersistentまたはEmailAddressの名前ID形式を選択し、email、firstName、lastName属性文を追加します。
  3. アプリケーションの メタデータURL を MetadataAddressにコピーしてください。

AD FS

  1. 信頼関係者信託を追加し、ポータルのアドレスからメタデータをインポートします。
  2. 請求発行ルールを追加し、メールアドレス、名前と姓、永続的な名前IDを送信します。
  3. MetadataAddresshttps://<your AD FS host>/FederationMetadata/2007-06/FederationMetadata.xml。

署名されたリクエストと暗号化された主張

ほとんどのプロバイダーはどちらも必要ありません。署名付き認証要求が必要なものやアサートを暗号化するものであれば、証明書と一緒にコードでプロバイダーを追加してください。両方ともポータルのメタデータに公開され、プロバイダーがインポートできます。

どのアドレスが信頼されているか

ポータルが信頼するアドレスのサインインは、そのアドレスを持つ連絡先に直接入力され、そのアドレスが確認された新しいアカウントが始まります。他のアドレスはまず一度だけメールで確認されます。その後はサインインと連絡先の間のリンクがそのアドレスを見つけます。

重要

* プロバイダーが主張するすべてのアドレスを信頼します。自分のユーザー向けに運営し、アドレスを認証する前に確認するアイデンティティプロバイダーにのみ使用してください。顧客やパートナーが管理するプロバイダーには絶対に使わないでください。管理者は他の組織の連絡先を含む任意のアドレスでアカウントを作成でき、その連絡先としてサインインできます。

サインインボタン

各プロバイダーはサインインページ上のボタンで、表示名でラベル付けされています。プロバイダーのセクションにさらに4つの設定があると、ボタンの見た目や位置が変わります:

舞台設定 それは何か
Icon標準ボタンの名前の前に小さなロゴが表示される、例えば顧客のサインイン時のロゴなどです。
ButtonImage標準ボタンの代わりに表示される画像:プロバイダー自身の「サインイン...」ボタン。
ButtonImageDark暗いテーマも同じイメージです。それがなければ、 ButtonImage は両方で使われます。
Orderボタンの位置:下のボタンが先で、同じ順番のボタンは提供者が追加された順番を維持します。デフォルトで0です。

画像はサイトのルートからのパス、例えばポータルの wwwrootにあるファイル( /images/contoso-logo.svg など)または https アドレスです。パスはサイトのルートから、すべてのページ、すべての言語で提供されます。それ以外のものは起動時にポータルを停止し、設定名を付けます。

MicrosoftやGoogleを含む他のプロバイダーのボタンはコードで変更されます:

Microsoft、Google、Facebookはそれぞれ独自の「サインイン...」ボタンを表示します。ライト版とダーク版の両方で、これらのボタンのいずれかを設定しない限り。

トラブルシューティング