Microsoft Entra ID で SAML SSO
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. エンタープライズ アプリケーションを作成する
- Microsoft Entra 管理センター に、少なくともクラウド アプリケーション管理者としてサインインする
- [Entra ID] > [エンタープライズ アプリ] > [すべてのアプリケーション] に移動する
- [新しいアプリケーション] を選び、[独自のアプリケーションの作成] を選ぶ
- アプリケーションの名前(例:
Pleasanter)を入力する - [ギャラリーに見つからない他のアプリケーションを統合する (ギャラリー以外)] を選び、[作成] を選ぶ
- 作成したアプリケーションの左側のメニューの [管理] セクションで [シングル サインオン] を選ぶ
- [シングル サインオン方式の選択] で [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 アカウント名 |
objectid | Microsoft 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. ユーザーとグループを割り当てる
- アプリケーションの [ユーザーとグループ] で [ユーザーまたはグループの追加] を選ぶ
- [割り当ての追加] ペインで [ユーザーとグループ] の [選択されていません] を選ぶ
- 割り当てるユーザーまたはグループを見つけて選び、[選択] を選ぶ
- [ロールの選択] でロールを選ぶ(アプリケーションがロールを定義していなければ、既定のロールは [既定のアクセス])
- [割り当て] を選ぶ
割り当てが必須かどうかは、アプリケーションの [プロパティ] にある [割り当てが必要ですか?] で決まります。
| 設定 | 動作(Microsoft Learn) |
|---|---|
| はい | アプリケーションに割り当てられたユーザー(直接の割り当て、または割り当てられたグループの 直接の メンバー)だけがサインインできる。未割り当てのユーザーは AADSTS50105 になる |
| いいえ | すべてのユーザーがサインインでき、組織に招待された外部ユーザーもサインインできる(条件付きアクセスなどほかのアクセス制御は引き続き適用される) |
WARNING
- グループベースの割り当てでは、入れ子になったグループのメンバーシップはサポートされていません(割り当ては入れ子になったグループにカスケードされません)。ユーザーを直接割り当てるか、ユーザーが直接所属するグループを割り当てます。
- グローバル管理者ロールを持つユーザーは、割り当ての要件に関係なくサインインできます。割り当ての動作確認は、グローバル管理者ではなく実際の利用者のアカウントで行ってください。
- [ユーザーのサインインが有効になっていますか?] が [いいえ] の場合は、割り当てられていてもサインインできません。
プリザンター側の設定
Authentication.json(メタデータ URL 方式)
公式マニュアルの Microsoft Entra ID 向け設定例です。値はダミーに置き換えています。
{
"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/Saml2 | SPOptions.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>/saml2 | IdentityProviders[].SignOnUrl | |
| アプリのフェデレーション メタデータ URL | IdentityProviders[].MetadataLocation | URL をそのまま貼り付ける。LoadMetadata を true にする |
| アプリケーション ID | MetadataLocation の appid パラメーター | |
| SAML 署名証明書 | SigningCertificate | メタデータ URL 方式では null。メタデータから取得される |
| 一意のユーザー識別子(名前 ID)(既定は UPN) | ログイン ID(MailAddress に {NameId} を指定するとメールアドレスにも使われる) |
公式マニュアルによると、EntityId と SignOnUrl はメタデータの取得時に上書きされる場合があります。Microsoft Entra ID のメタデータの値と一致していれば問題ありません。
メタデータ URL 方式と証明書ストア方式
| 方式 | 設定 | 向いているケース |
|---|---|---|
| メタデータ URL 方式 | LoadMetadata: true、MetadataLocation にメタデータの URL(またはサーバー上の XML ファイルの絶対パス)、SigningCertificate: null | Linux などで証明書ストアへの配置が難しい場合。証明書の更新に合わせて更新されるメタデータを使いたい場合 |
| 証明書ストア方式 | LoadMetadata: false、SigningCertificate に StoreName・StoreLocation・X509FindType・FindValue(拇印)を指定 | サーバーからメタデータ URL に接続できない場合など |
- プリザンターから
MetadataLocationの URL への通信がファイアウォールなどで遮断されていると、メタデータを取得できません。その場合は、フェデレーション メタデータ XML をサーバーにダウンロードし、ファイルパスで指定します(公式マニュアル)。 - 証明書ストア方式でのインポート手順(Windows・Linux・Azure App Service など)は 証明書のインポート と Google Workspace の手順 を参照してください。
その他の SPOptions
| 項目 | 内容(公式マニュアル) |
|---|---|
PublicOrigin | Saml2 エンドポイントのベース URL。リバースプロキシやロードバランサーの配下で、サーバー内の URL と外部に公開している URL が異なる場合に使う |
IgnoreMissingInResponseTo | SAML レスポンスの InResponseTo 要素の検証をスキップする場合に true |
NotCreatePersistentCookie | SAML 認証時に認証クッキーを永続化しないようにする(1.4.8.0 以降) |
反映と動作確認
- プリザンターを再起動します(IIS の場合はアプリケーションプールまたは IIS を再起動)。SAML の設定は起動時に一度だけ登録されるため、パラメータのリロード では反映されません(Startup.cs)。
- ログイン画面に「SSO ログイン」ボタンが表示されることを確認します。
- ボタンから 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 の値と形式、発行された要求、署名に使われた証明書を確認する |
関連ページ
- 認証(Google Workspace の SAML SSO / SMTP の OAuth)
- 認証方式の内部動作(Provider・フォールバック・2 段階認証・パスキー)
- マルチテナント運用
- 証明書のインポート(OS・環境別)
- パラメータ(Parameters フォルダの外出し、リロード)
参考
プリザンター公式マニュアル
- Microsoft Entra IDによるシングルサインオンを利用する
- SAML認証を利用する
- パラメータ設定:Authentication.json
- FAQ:SAML認証設定でAuthentication.json に設定するSAMLレスポンスの属性名を確認したい
- FAQ:SAML認証で、ユーザー項目を「Name」の代わりに「givenName」と「surname」を結合して指定したい
Microsoft Learn
- クイックスタート: エンタープライズ アプリケーションを追加する
- エンタープライズ アプリケーションの SAML シングル サインオンを有効にする
- 証明書利用者 STS を使用してエンタープライズ アプリケーションのシングル サインオンを有効にする(ギャラリー以外のアプリケーションの作成、メタデータと証明書のダウンロード)
- Microsoft Entra アプリ ギャラリーのオンボード用に SAML シングル サインオン アプリを検証する(基本的な SAML 構成、よくある AADSTS エラー)
- SAML トークン クレームをカスタマイズする
- SAML トークン要求リファレンス
- シングル サインオン SAML プロトコル
- アプリケーションへのユーザーとグループの割り当てを管理する
- アプリケーションへのアクセスの管理
- エンタープライズ アプリケーションのプロパティ
- チュートリアル: フェデレーション シングル サインオンのための証明書の管理
- アプリケーションに対する SAML に基づいたシングル サインオンをデバッグする
- SAML 認証でのエラー AADSTS50011 - 要求で指定された応答 URL が一致しません
- エラー AADSTS50105 - サインインしているユーザーがアプリケーションのロールに割り当てられません
- エラー AADSTS70001 - 識別子を持つアプリケーションがディレクトリ内で見つからなかった
- エラー AADSTS750054 - SAML リダイレクト バインディング用の HTTP 要求に、SAMLRequest または SAMLResponse がクエリ文字列のパラメーターとして指定されている必要がある