Skip to content

Microsoft Entra ID で SAML SSO ​

第6版作成 最終更新 (日本時間)
対応バージョンPleasanter 1.2.6.0 以降確認バージョン1.5.8.1

Microsoft Entra ID(旧 Azure AD)を ID プロバイダー(IdP)、プリザンターをサービス プロバイダー(SP)にして、SAML シングル サインオン(SSO)を構成する手順をまとめます。Microsoft Entra ID 側の操作と画面の表記は Microsoft Learn(日本語版)、プリザンター側の設定は公式マニュアルに沿っています。

  • Microsoft Entra ID 側: ギャラリー以外のエンタープライズ アプリケーション(「独自のアプリケーションの作成」)を作成します。「基本的な SAML 構成」に、識別子 (エンティティ ID) https://<サーバー>/Saml2 と応答 URL (Assertion Consumer Service URL) https://<サーバー>/Saml2/Acs を登録し、SSO を使うユーザーやグループをアプリケーションに割り当てます。
  • プリザンター側: Authentication.json の Provider を "SAML" にします。IdP 情報は、Microsoft Entra ID の「アプリのフェデレーション メタデータ URL」を MetadataLocation に指定する方式が使えます。この方式では、証明書をサーバーにインポートする必要がありません。
  • ユーザーの照合: SAML 応答の NameID が、プリザンターの ログイン ID になります。Microsoft Entra ID が発行する NameID は、既定ではユーザー名(ユーザー プリンシパル名、UPN)です。

INFO

以下のテナント ID・アプリケーション ID・URL・メールアドレスはすべてダミー値です(テナント ID 00000000-0000-0000-0000-000000000000、アプリケーション ID 11111111-1111-1111-1111-111111111111、サーバー pleasanter.example.com)。実際の環境の値に置き換えてください。

前提条件と制限事項 ​

項目内容出典
エンタープライズ アプリケーションの追加「クラウド アプリケーション管理者」または「アプリケーション管理者」のロールMicrosoft Learn
SAML SSO の構成「クラウド アプリケーション管理者」「アプリケーション管理者」のいずれかのロール、またはサービス プリンシパルの所有者Microsoft Learn
ユーザーとグループの割り当て「クラウド アプリケーション管理者」「アプリケーション管理者」「ユーザー管理者」のいずれかのロール、またはサービス プリンシパルの所有者Microsoft Learn
SAML 証明書の管理「特権ロール管理者」「クラウド アプリケーション管理者」「アプリケーション管理者」のいずれかのロールMicrosoft Learn
グループベースの割り当てMicrosoft Entra ID P1 または P2 が必要Microsoft Learn
アプリケーションの種類SAML SSO は、シングル テナント アプリケーションまたはギャラリー アプリケーションでのみ構成できる(マルチテナント アプリケーションでは淡色表示になる)Microsoft Learn
プリザンターのバージョンSAML 認証は 1.2.6.0 以降、NotCreatePersistentCookie は 1.4.8.0 以降公式マニュアル
Pleasanter.net共有環境では SAML 認証を利用できない公式マニュアル
SP メタデータプリザンターには SP メタデータを発行する機能がないため、Microsoft Entra ID 側には値を手入力する公式マニュアル
プロトコル運用環境では https を使う(http はローカル検証・開発用途に限る)公式マニュアル

Microsoft Learn では、手順を試すときは非運用環境を使うことが推奨されています。

SAML SSO の流れ(SP-initiated) ​

プリザンターのログイン画面にある「SSO ログイン」ボタンから始まる流れです。

図を読み込み中…

Microsoft Learn(シングル サインオン SAML プロトコル)には、次のように書かれています。

  • SAML 要求の Issuer 要素は、アプリケーションに登録した識別子(サービス プリンシパル名)と正確に一致している必要があります。Microsoft Entra ID は Issuer を使ってディレクトリ内のアプリケーションを検索します。
  • SAML 要求に AssertionConsumerServiceURL が含まれている場合、その値は登録済みの応答 URL と一致している必要があります。
  • SAML 応答とアサーションの Issuer は https://sts.windows.net/<テナント ID>/ です。アサーションの Audience には、SAML 要求の Issuer の値(プリザンターの SPOptions.EntityId)が入ります。
  • アサーションの有効期間(NotOnOrAfter)は NotBefore の 70 分後です。Microsoft Entra ID は SP との時刻のずれを考慮しないため、プリザンターのサーバーの時刻を正しく合わせておいてください。

Microsoft Entra ID 側の設定 ​

1. エンタープライズ アプリケーションを作成する ​

  1. Microsoft Entra 管理センター に、少なくともクラウド アプリケーション管理者としてサインインする
  2. [Entra ID] > [エンタープライズ アプリ] > [すべてのアプリケーション] に移動する
  3. [新しいアプリケーション] を選び、[独自のアプリケーションの作成] を選ぶ
  4. アプリケーションの名前(例: Pleasanter)を入力する
  5. [ギャラリーに見つからない他のアプリケーションを統合する (ギャラリー以外)] を選び、[作成] を選ぶ
  6. 作成したアプリケーションの左側のメニューの [管理] セクションで [シングル サインオン] を選ぶ
  7. [シングル サインオン方式の選択] で [SAML] を選ぶ

[SAML によるシングル サインオンのセットアップ] ページが開きます。以降の手順は、このページの各セクションで行います。

TIP

Microsoft Learn では、アプリケーションの作成後、ベスト プラクティスとしてアプリケーションに所有者を割り当てることが勧められています。

2. 基本的な SAML 構成 ​

[基本的な SAML 構成] セクションで [編集] を選び、次の値を入力して [保存] を選びます。識別子と応答 URL は、ほかの SAML 構成を変更する前に設定しておく必要があります。

項目Microsoft Learn での説明入力する値(例)
識別子 (エンティティ ID)アプリケーションが Microsoft Entra ID に対して自身を識別するために使う識別子。一覧にない場合は [識別子の追加] で追加するhttps://pleasanter.example.com/Saml2
応答 URL (Assertion Consumer Service URL)Microsoft Entra ID が SAML 応答を POST するエンドポイント。[応答 URL の追加] で追加するhttps://pleasanter.example.com/Saml2/Acs
サインオン URLアプリケーションのサインイン ページ。アプリケーションが SP Initiated SSO をサポートしている場合に構成する公式マニュアルの手順では設定していない(下記参照)

応答 URL は /Saml2/Acs

公式マニュアルの一覧では、プリザンターの URL が次のように分けられています。

  • ACS URL: 【サーバ名】/Saml2/Acs
  • 認証成功後に遷移するリダイレクト URL(SPOptions.ReturnUrl): 【サーバ名】/Users/SamlLogin

Microsoft Entra ID の「応答 URL (Assertion Consumer Service URL)」には ACS URL(/Saml2/Acs)を登録します。プリザンターは Sustainsys.Saml2 の既定のパス(/Saml2)で SAML を受けるため、SAML 応答を処理するのは /Saml2/Acs です(Startup.cs、Saml.cs の SetSPOptions)。/Users/SamlLogin は ACS の処理が終わった後に遷移するプリザンター側の画面で、ここに SAML 応答を直接 POST してもログインできません(UsersController.cs)。

サインオン URL について

Microsoft Learn によると、サインオン URL を構成すると、マイ アプリのタイルからアプリケーションのサインイン ページへリダイレクトされ、SP によって開始されるサインインになります。サインオン URL を空にすると、マイ アプリのタイルからは IdP によって開始されるサインイン(Microsoft Entra ID から応答 URL へ、要求されていない SAML 応答を POST する)になります。プリザンター側では AllowUnsolicitedAuthnResponse が true のときに IdP-initiated を受け付けます(公式マニュアルの設定例では true)。サインオン URL に入れるべきプリザンター側の URL は公式マニュアルに記載がないため、ここでは空欄の前提で説明します。

3. 属性と要求(NameID)を確認する ​

[属性と要求] セクションで [編集] を選び、プリザンターに送る値を確認・編集します(公式マニュアルでは「属性とクレーム」と表記されています)。

一意のユーザー識別子(名前 ID) ​

Microsoft Learn によると、Microsoft Entra ID は既定で、ユーザー名(ユーザー プリンシパル名)を値とする NameID を発行します。変更するには [一意のユーザー識別子 (名前 ID)] の行を選び、[名前識別子の値] ページでソース属性(または変換)を選びます。ソースとして選べる属性は次のとおりです。

ソース内容
userprincipalName(既定)ユーザー プリンシパル名(UPN)
Emailユーザーのメール アドレス
onpremisessamaccountnameオンプレミスから同期された SAM アカウント名
objectidMicrosoft Entra ID のユーザーのオブジェクト ID
employeeidユーザーの従業員 ID
ディレクトリ拡張、Extension Attributes 1-15ディレクトリ拡張属性、オンプレミス拡張属性
pairwiseid永続的な形式のユーザー識別子

構成したソース属性が null の場合は userprincipalName が使われます。変換の結果が null または無効な値の場合は、永続的なペアワイズ識別子が NameID として送信されます。

NameID の形式は [名前識別子の形式の選択] で、既定(選んだソースの既定の形式)・Persistent・EmailAddress・Unspecified・WindowsDomainQualifiedName から選べます。ただし、SAML 要求に NameIDPolicy で形式が指定されている場合は、要求側の形式が優先されます。

プリザンターは NameID を ログイン ID として使います。公式マニュアルの設定例は "MailAddress": "{NameId}" なので、NameID はメールアドレスにも使われます。UPN とメールアドレスが違う組織では、次のどちらかにしてください。

  • NameID のソース属性をメール アドレスに変える
  • MailAddress に別の要求を指定する

メール アドレスだけで照合するリスク

Microsoft Learn では、メール アドレスやユーザー名は変更・再割り当てができるため、ユーザーの照合を変更可能な値だけに頼らないよう注意しています(以前のユーザーの識別子を引き継いだ別のユーザーが、そのアカウントにアクセスできてしまうおそれがある)。退職者のアドレスを再利用する運用がある場合は、NameID のソースや移行方法を慎重に決めてください。

詳しくは「ユーザーの照合と運用上の注意」を参照してください。

その他の要求(属性) ​

Microsoft Learn によると、既定の SAML トークンには、ユーザーのメール アドレス・名・姓などの要求も含まれます。要求名は http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname(名)のような URI 形式です(姓は .../claims/surname、名前は .../claims/name で、値はユーザー プリンシパル名)。

アプリケーション固有の要求は [新しい要求の追加] で追加します([ユーザー要求の管理] ページが開きます)。要求の [名前] は URI パターンに従う必要はなく、URI パターンが必要な場合は [名前空間] フィールドを使います。値は [ソース属性] から選ぶか、変換を適用して生成します。部門コードなどをプリザンターに渡したい場合は、プリザンターの Attributes に書く名前(例: DeptCode)で要求を追加します。

属性名は実際の SAML 応答で確認する

プリザンターの Attributes の値は「SAML レスポンスの属性名」です。Microsoft Entra ID の既定の要求を URI 形式の名前のまま書けばよいのか、プリザンター側がどう照合するのかは、公式マニュアルでは確認できませんでした。公式 FAQ「SAML認証設定でAuthentication.json に設定するSAMLレスポンスの属性名を確認したい」の手順(ブラウザーの開発者ツールで SAML 応答を取り出し、デコードする)か、後述の Microsoft Entra ID のテスト機能で実際の属性名を確認してから設定してください。

4. メタデータ URL・識別子・アプリケーション ID を控える ​

公式マニュアルでは、Authentication.json に使う値を次の場所から取得します。

控える値場所例
アプリのフェデレーション メタデータ URL[SAML 証明書] セクションhttps://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/FederationMetadata/2007-06/FederationMetadata.xml?appid=11111111-1111-1111-1111-111111111111
Microsoft Entra 識別子Microsoft Learn では [(アプリ名)のセットアップ] セクションに表示される(公式マニュアルは「属性とクレーム」セクションから控える手順)https://sts.windows.net/00000000-0000-0000-0000-000000000000/
ログイン URL[(アプリ名)のセットアップ] セクションhttps://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/saml2
アプリケーション ID左側のメニューの [管理] > [プロパティ]11111111-1111-1111-1111-111111111111

[SAML 証明書] セクションでは、次の形式もダウンロードできます。

  • 証明書 (Base64)
  • 証明書 (未加工)
  • フェデレーション メタデータ XML

証明書ストア方式(後述)にする場合や、プリザンターのサーバーからメタデータ URL に接続できない場合に使います。

5. ユーザーとグループを割り当てる ​

  1. アプリケーションの [ユーザーとグループ] で [ユーザーまたはグループの追加] を選ぶ
  2. [割り当ての追加] ペインで [ユーザーとグループ] の [選択されていません] を選ぶ
  3. 割り当てるユーザーまたはグループを見つけて選び、[選択] を選ぶ
  4. [ロールの選択] でロールを選ぶ(アプリケーションがロールを定義していなければ、既定のロールは [既定のアクセス])
  5. [割り当て] を選ぶ

割り当てが必須かどうかは、アプリケーションの [プロパティ] にある [割り当てが必要ですか?] で決まります。

設定動作(Microsoft Learn)
はいアプリケーションに割り当てられたユーザー(直接の割り当て、または割り当てられたグループの 直接の メンバー)だけがサインインできる。未割り当てのユーザーは AADSTS50105 になる
いいえすべてのユーザーがサインインでき、組織に招待された外部ユーザーもサインインできる(条件付きアクセスなどほかのアクセス制御は引き続き適用される)

WARNING

  • グループベースの割り当てでは、入れ子になったグループのメンバーシップはサポートされていません(割り当ては入れ子になったグループにカスケードされません)。ユーザーを直接割り当てるか、ユーザーが直接所属するグループを割り当てます。
  • グローバル管理者ロールを持つユーザーは、割り当ての要件に関係なくサインインできます。割り当ての動作確認は、グローバル管理者ではなく実際の利用者のアカウントで行ってください。
  • [ユーザーのサインインが有効になっていますか?] が [いいえ] の場合は、割り当てられていてもサインインできません。

プリザンター側の設定 ​

Authentication.json(メタデータ URL 方式) ​

公式マニュアルの Microsoft Entra ID 向け設定例です。値はダミーに置き換えています。

json
{
    "Provider": "SAML",
    "SamlParameters": {
        "Attributes": {
            "Name": "Name",
            "UserCode": "UserCode",
            "Birthday": "Birthday",
            "Gender": "Gender",
            "Language": "Language",
            "TimeZone": "TimeZone",
            "TenantManager": "TenantManager",
            "DeptCode": "DeptCode",
            "Dept": "Dept",
            "Body": "Body",
            "MailAddress": "{NameId}"
        },
        "SamlTenantId": 1,
        "DisableOverwriteName": false,
        "NotCreatePersistentCookie": false,
        "SPOptions": {
            "EntityId": "https://pleasanter.example.com/Saml2",
            "ReturnUrl": "https://pleasanter.example.com/Users/SamlLogin",
            "AuthenticateRequestSigningBehavior": "IfIdpWantAuthnRequestsSigned",
            "OutboundSigningAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
            "MinIncomingSigningAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
            "IgnoreMissingInResponseTo": false,
            "PublicOrigin": null,
            "ServiceCertificates": []
        },
        "IdentityProviders": [
            {
                "EntityId": "https://sts.windows.net/00000000-0000-0000-0000-000000000000/",
                "SignOnUrl": "https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/saml2",
                "LogoutUrl": null,
                "AllowUnsolicitedAuthnResponse": true,
                "Binding": "HttpPost",
                "WantAuthnRequestsSigned": false,
                "DisableOutboundLogoutRequests": true,
                "LoadMetadata": true,
                "MetadataLocation": "https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/FederationMetadata/2007-06/FederationMetadata.xml?appid=11111111-1111-1111-1111-111111111111",
                "SigningCertificate": null
            }
        ]
    }
}

署名アルゴリズムの表記

OutboundSigningAlgorithm と MinIncomingSigningAlgorithm の値は URL ではなくアルゴリズムの識別子で、http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 と書きます(本体に同梱の既定値も http です。Authentication.json)。公式マニュアルには https:// と書かれている箇所がありますが、識別子として一致しなくなるため http:// にしてください。

Microsoft Entra ID の値とプリザンターの設定の対応 ​

Microsoft Entra ID 側の値プリザンターの設定備考
識別子 (エンティティ ID):https://pleasanter.example.com/Saml2SPOptions.EntityId完全に一致させる
応答 URL (Assertion Consumer Service URL):https://pleasanter.example.com/Saml2/Acs対応する設定項目はない。SPOptions.ReturnUrl は https://pleasanter.example.com/Users/SamlLogin公式マニュアルは、ReturnUrl の【サーバ名】部分を応答 URL とそろえるよう求めている。パスは ACS URL(/Saml2/Acs)と ReturnUrl(/Users/SamlLogin)で異なる
Microsoft Entra 識別子:https://sts.windows.net/<テナント ID>/IdentityProviders[].EntityId末尾の / まで含める
ログイン URL:https://login.microsoftonline.com/<テナント ID>/saml2IdentityProviders[].SignOnUrl
アプリのフェデレーション メタデータ URLIdentityProviders[].MetadataLocationURL をそのまま貼り付ける。LoadMetadata を true にする
アプリケーション IDMetadataLocation の appid パラメーター
SAML 署名証明書SigningCertificateメタデータ URL 方式では null。メタデータから取得される
一意のユーザー識別子(名前 ID)(既定は UPN)ログイン ID(MailAddress に {NameId} を指定するとメールアドレスにも使われる)

公式マニュアルによると、EntityId と SignOnUrl はメタデータの取得時に上書きされる場合があります。Microsoft Entra ID のメタデータの値と一致していれば問題ありません。

メタデータ URL 方式と証明書ストア方式 ​

方式設定向いているケース
メタデータ URL 方式LoadMetadata: true、MetadataLocation にメタデータの URL(またはサーバー上の XML ファイルの絶対パス)、SigningCertificate: nullLinux などで証明書ストアへの配置が難しい場合。証明書の更新に合わせて更新されるメタデータを使いたい場合
証明書ストア方式LoadMetadata: false、SigningCertificate に StoreName・StoreLocation・X509FindType・FindValue(拇印)を指定サーバーからメタデータ URL に接続できない場合など
  • プリザンターから MetadataLocation の URL への通信がファイアウォールなどで遮断されていると、メタデータを取得できません。その場合は、フェデレーション メタデータ XML をサーバーにダウンロードし、ファイルパスで指定します(公式マニュアル)。
  • 証明書ストア方式でのインポート手順(Windows・Linux・Azure App Service など)は 証明書のインポート と Google Workspace の手順 を参照してください。

その他の SPOptions ​

項目内容(公式マニュアル)
PublicOriginSaml2 エンドポイントのベース URL。リバースプロキシやロードバランサーの配下で、サーバー内の URL と外部に公開している URL が異なる場合に使う
IgnoreMissingInResponseToSAML レスポンスの InResponseTo 要素の検証をスキップする場合に true
NotCreatePersistentCookieSAML 認証時に認証クッキーを永続化しないようにする(1.4.8.0 以降)

反映と動作確認 ​

  1. プリザンターを再起動します(IIS の場合はアプリケーションプールまたは IIS を再起動)。SAML の設定は起動時に一度だけ登録されるため、パラメータのリロード では反映されません(Startup.cs)。
  2. ログイン画面に「SSO ログイン」ボタンが表示されることを確認します。
  3. ボタンから Microsoft Entra ID にサインインし、プリザンターにログインできることを確認します。

Microsoft Entra ID 側でも、[SAML によるシングル サインオンのセットアップ] ページの [(アプリ名)でのシングル サインオンのテスト] セクションで [テスト] を選ぶと、SSO をテストできます([テスト] が淡色表示の場合は、先に「基本的な SAML 構成」の必須項目を入力して保存します)。Microsoft Learn(SAML に基づいたシングル サインオンのデバッグ)の手順は次のとおりです。

  • ブラウザー拡張機能「マイ アプリによるセキュリティで保護されたサインイン拡張機能」(Microsoft Edge・Chrome 用)を入れておくと、[シングル サインオンのテスト] ページで [SAML 要求をダウンロードします]・[SAML 応答をダウンロードします] を選んで要求と応答を取得でき、エラーに応じた解決ガイダンスも表示されます。
  • 拡張機能を入れていない場合は、会社のサインイン ページに表示されたエラー メッセージをコピーし、[シングル サインオンのテスト] ページのテキスト ボックスに貼り付けて [解決ガイダンスを入手する] を選びます。
  • Microsoft Entra ID ではサインインできたのにアプリケーション側でエラーになる場合は、SAML 応答の NameID の値と形式、発行された要求、トークンの署名に使われた証明書を確認します。

ユーザーの照合と運用上の注意 ​

プリザンター側の動作は、公式マニュアルと Google Workspace の手順 に書かれている内容です。IdP が Microsoft Entra ID でも同じように動作します。

  • ログイン ID との照合: SAML 応答の NameID がログイン ID として扱われます。未登録のログイン ID ならユーザーが新規作成され、登録済みならそのユーザーの情報が更新されます。
  • 既存ユーザーの引き継ぎ: Microsoft Entra ID の NameID(既定は UPN)と、既存ユーザーのログイン ID が一致していれば、そのまま引き継がれます。一致しない場合は、切り替え前にログイン ID をそろえてください。手順と SQL の例は 既存ユーザーを SSO に移行する を参照してください。NameID のソース属性を変更する(例: UPN からメール アドレスへ)と照合結果も変わるため、移行を始める前に決めておきます。
  • 属性の同期: 同期されるのは、Attributes に指定した属性名が SAML 応答に含まれている項目だけです。Microsoft Entra ID が送らない属性は更新されません。同期のタイミングはログイン時だけです。
  • 名前を名と姓から組み立てる: 公式 FAQ の方法です。"Name": null にして FirstName と LastName に属性名を指定すると、2 つを組み合わせた値が「名前」になります(公式 FAQ)。Microsoft Entra ID で使う属性名は、前述の手順で SAML 応答から確認してください。
  • 未登録ユーザーの拒否: RejectUnregisteredUser を true にすると、事前に登録済みのユーザーしか SAML ログインできません。Microsoft Entra ID 側の「割り当てが必要ですか?」とは別の制御です。
  • グループと退職者: SAML ではグループは自動管理されません。Microsoft Entra ID 側でユーザーを無効化しても、プリザンター側のユーザーは有効なまま残ります(部門・グループ・同期タイミング)。公式マニュアルには、IdP からユーザー情報を連携する SCIM 機能 のページもあります。
  • ローカルログインとの併用: SAML を有効にしても ID / パスワードでのログインは残ります。制限方法(AllowOriginalLogin)は SAML ユーザーとローカルユーザーの混在 を参照してください。Microsoft Learn でも、ローカル資格情報で SSO をバイパスできる設定は無効にすることが勧められています。

SAML 署名証明書の期限と更新 ​

Microsoft Learn(フェデレーション シングル サインオンのための証明書の管理)によると、次のとおりです。

  • SAML ベースのサインオンを構成すると、Microsoft Entra ID は 3 年間有効な自己署名証明書を自動で生成します。保存した後に証明書の日付は変更できません。
  • 有効期限の 60 日前・30 日前・7 日前に、通知メールが azure-noreply@microsoft.com から届きます。通知先は既定ではアプリケーションを追加した管理者のメール アドレスだけで、[SAML 署名証明書] ページの [通知メール アドレス] に最大 5 つまで指定できます(それ以上は配布リストを使う)。
  • 更新は [SAML 証明書] セクションの [編集] で開く [SAML 署名証明書] ページで行います。[新しい証明書] を選んで有効期限を設定し [保存] すると、新しい証明書は [非アクティブ] の状態で追加されます。行の省略記号(...)から [証明書をアクティブにする] を選ぶと新しい証明書がアクティブになり、以前の証明書は非アクティブになります。
  • 既に期限切れの証明書があるときに新しい証明書を生成すると、新しい証明書はアクティブにする前でもトークンの署名に使われます。
  • Microsoft Learn は、アプリケーション側でフェデレーション メタデータを定期的に(少なくとも 24 時間ごとに)取得し、新しい証明書を自動で検出する構成を推奨しています。

プリザンターでの対応は次のとおりです。

  • 証明書ストア方式: 新しい証明書を作成したら、適切な形式でダウンロードしてプリザンターのサーバーにインポートし、FindValue を新しい拇印に更新してから、Microsoft Entra ID で [証明書をアクティブにする] を行います。一度に 1 つの証明書しか扱えない構成では、切り替えの間にサインインできない時間が生じるため、メンテナンス時間に行ってください。
  • メタデータ URL 方式: 新しい証明書がプリザンターにいつ読み込まれるか(再起動が必要か)は確認できていません。証明書をアクティブにしたら、SSO ログインできることを確かめてください。

トラブルシューティング ​

症状・エラー原因(Microsoft Learn / 公式マニュアル)対処
AADSTS50011(応答 URL が、アプリケーション用に構成された応答 URL と一致しない)SAML 要求の AssertionConsumerServiceURL の値が、Microsoft Entra ID に構成した応答 URL の値またはパターンと一致しない(エラー メッセージに表示される URL が要求側の値)エラーに表示された URL と「応答 URL (Assertion Consumer Service URL)」を比べてそろえる。プリザンターの ACS URL は https://<サーバー>/Saml2/Acs。リバースプロキシの配下では PublicOrigin も確認する
AADSTS50105(サインインしているユーザーがアプリケーションのロールに割り当てられていない)「割り当てが必要ですか?」が「はい」で、ユーザーが直接にも、直接所属するグループ経由でも割り当てられていない「ユーザーとグループ」で割り当てる(ロールがなければ「既定のアクセス」)。割り当てを不要にする場合は、組織のアクセス方針と一致することを確認してから「いいえ」にする。確認はグローバル管理者以外のアカウントで行う
AADSTS700016 / AADSTS70001(アプリケーションが見つからない)SAML 要求の Issuer(プリザンターの SPOptions.EntityId)が、Microsoft Entra ID の「識別子 (エンティティ ID)」と一致しない両者を一致させる。末尾にスラッシュがある場合はそれも含める。テスト機能の解決ガイダンスで、見つかった発行者と識別子の違いを確認できる
AADSTS750054(SAML リダイレクト バインドの HTTP 要求に SAMLRequest または SAMLResponse が必要)Microsoft Entra ID が HTTP 要求の URL パラメーターから SAML 要求を識別できなかったMicrosoft Learn の確認項目: アプリケーション側でシングル サインオンが有効か、アプリケーションが SP Initiated SSO をサポートしているか、サインオン URL が正しく構成されているか。プリザンターの「SSO ログイン」ボタンから試す
ログイン画面に「SSO ログイン」ボタンが出ない設定が反映されていない、または Authentication.json の JSON 構文エラープリザンターを再起動し(パラメータのリロードでは反映されない)、JSON の構文を確認する
メタデータを取得できないプリザンターから MetadataLocation への通信が遮断されている通信経路を確認するか、フェデレーション メタデータ XML をダウンロードしてファイルパスで指定する
ログインはできるが別のユーザーとして新規作成されるNameID(UPN など)と既存ユーザーのログイン ID が一致しないNameID のソース属性と既存のログイン ID をそろえる
名前や部門が反映されないAttributes に書いた属性名と、SAML 応答の属性名が一致しない。または Microsoft Entra ID がその要求を送っていない公式 FAQ の手順やテスト機能で SAML 応答を確認し、属性名を合わせる。必要な要求を「属性と要求」に追加する
Microsoft Entra ID ではサインインできたが、プリザンター側でエラーになるMicrosoft Entra ID はトークンを発行したが、プリザンターが SAML 応答を受け付けていない(署名・証明書・属性など)テスト機能や開発者ツールで SAML 応答を取得し、NameID の値と形式、発行された要求、署名に使われた証明書を確認する

関連ページ ​

参考 ​

プリザンター公式マニュアル ​

Microsoft Learn ​

変更履歴

第6版認証方式(2 段階認証・パスキー・LDAP・フォールバック)と認証基盤の解説、関連する改修・設計メモを追加
第5版「外部連携・AI」「構築・運用」「内部実装を読む」に対応バージョンを表示
第4版Entra ID の SAML SSO にソースで確認した ACS URL・署名アルゴリズム・反映方法を反映
第3版Microsoft Entra ID の SAML SSO を Microsoft Learn(日本語版)の手順・用語に合わせて改訂
第2版記事のファイル名に並び順の番号を付け、元記事リンクを frontmatter の sources に移行
第1版「構築・運用」に Microsoft Entra ID での SAML SSO を追加