ken_nogi/NodeSrv/apps/org-master-sync/pleasanter-saml/setup-手順.md
Kenichiro NOGI ce58cb4be4 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合
GitHub(nextgroup2706/ken_nogi)は今後使わず自社Gitea運用に切替え。
NodeSrvは旧リポジトリの履歴を破棄しファイルのみ統合(Dokploy用サービスアカウントは
別途mygit-admin/NodeSrv.gitに履歴あり)。notepmエクスポート(12GB)とPleasanter
インストーラzip(208MB)はサイズが大きいため.gitignoreで除外。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 15:37:06 +09:00

95 lines
4.8 KiB
Markdown

# 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`等の項目名、要現物確認)を確認
エラーメッセージが出たら、その内容を教えてもらえれば原因を特定する。