# LINEWORKS → Keycloak → プリザンター(テスト環境) SSO設定手順 ## 全体構成 ``` LINEWORKS(IdP, SAML) │ ※既存連携済み(Identity Providers > lineworks)。変更不要 ▼ Keycloak(nexthdレルム, SAML Identity Broker) │ ← 今回新規作成するSAML Client ▼ プリザンター(SP, nextoffice2.next-hd.net) │ ← Authentication.json にSAML設定追加 ``` LINEWORKS側は既にKeycloakのSAML IdPとして稼働中のため、今回の作業はKeycloak側の新規SAML Client作成と、プリザンター側の設定ファイル編集のみ。 ## 前提の値 | 項目 | 値 | |---|---| | プリザンターURL | `https://nextoffice2.next-hd.net/pleasanter/` | | SP Entity ID(想定) | `https://nextoffice2.next-hd.net/pleasanter/Saml2` | | ACS URL(想定、ログイン後の戻り先) | `https://nextoffice2.next-hd.net/pleasanter/Users/SamlLogin` | | Keycloak SAML IdPメタデータURL | `https://auth91.next-hd.net/realms/nexthd/protocol/saml/descriptor` | ※ACS URLはプリザンター(.NET Core版、Sustainsys.Saml2ライブラリ使用)の一般的な設定例からの推測。実際に接続テストしてエラーが出た場合、後述の「うまくいかない場合」を参照。 ## 手順1: Keycloakに新規SAML Clientを作成 `https://auth91.next-hd.net/admin/master/console/`、レルムを **nexthd** に切替。 1. Clients → **Create client** 2. Client type: **SAML** 3. Client ID: `https://nextoffice2.next-hd.net/pleasanter/Saml2` 4. Name: `プリザンター(テスト)SSO` 5. **Next** 6. Home URL: `https://nextoffice2.next-hd.net/pleasanter/` 7. Valid redirect URIs: `https://nextoffice2.next-hd.net/pleasanter/Users/SamlLogin` 8. **Save** 保存後、Client詳細画面の **Settings** タブで以下を確認・設定: - **Name ID format**: `email` - **Force name ID format**: ON - **Sign documents**: ON(推奨。OFFで動かない場合のみ検討) ## 手順2: プリザンター側 Authentication.json 編集 対象ファイル: プリザンターサーバー上の `Implem.Pleasanter/App_Data/Parameters/Authentication.json` 既存の内容を確認した上で、以下の内容を追加・マージする(既存キーがあれば上書きせず、`SamlParameters`セクションのみ追加するイメージ)。 ```json { "Provider": "SAML", "SamlParameters": { "SamlTenantId": 1, "Attributes": { "MailAddress": "{NameId}" }, "SPOptions": { "PublicOrigin": "https://nextoffice2.next-hd.net/pleasanter/", "EntityId": "https://nextoffice2.next-hd.net/pleasanter/Saml2", "ReturnUrl": "https://nextoffice2.next-hd.net/pleasanter/Users/SamlLogin" }, "IdentityProviders": [ { "EntityId": "https://auth91.next-hd.net/realms/nexthd/protocol/saml/descriptor", "LoadMetadata": true } ] } } ``` - `LoadMetadata: true` により、KeycloakのSAMLメタデータ(署名証明書・SSO URL等)を自動取得する。証明書の手動コピペは不要な想定 - `Attributes.MailAddress: "{NameId}"` は、KeycloakのNameID Format を email にした設定(手順1)と対応。プリザンター側はNameIDに入ってきた値をメールアドレスとして扱う - 氏名(Name)属性は今回未設定。LINEWORKS→Keycloakの既存連携がメールアドレスしか渡さない制約(README記載)があるため、まずメールアドレスのみでログイン疎通を確認してから、必要なら氏名マッピングを追加する 編集後、プリザンターのアプリケーションプール/サービスを再起動して設定を反映(既存運用手順に従う)。 ## 手順3: 動作確認 1. `https://nextoffice2.next-hd.net/pleasanter/` にブラウザでアクセスし、ログイン画面にSAMLログインの選択肢が出るか確認 2. SAMLログインを選択 → Keycloakのログイン画面 → 「LINE WORKSでログイン」を選択 → LINE WORKS認証 → プリザンターへリダイレクトされてログイン完了、の流れを確認 ## うまくいかない場合 - **ACS URL不一致エラー**: Keycloak側「Valid redirect URIs」とプリザンター側「ReturnUrl」が完全一致しているか確認。実際のプリザンター側エラーログ(またはブラウザのネットワークタブ)に表示される実際のACS URLを見て、両方をそこに合わせる - **署名検証エラー**: Keycloak側「Sign documents」をOFFにして再試行、またはプリザンター側で署名検証を無効化する設定(`WantAssertionsSigned`等)を確認 - **ユーザーが見つからない/作成されないエラー**: プリザンター側でSAML初回ログイン時のユーザー自動作成設定(`AllowToCreateUsers`等の項目名、要現物確認)を確認 エラーメッセージが出たら、その内容を教えてもらえれば原因を特定する。