nextcloudとKeycloakのSAML SSO
TL;DR
- nextcloudはオープンソースのファイルストレージサービスです。SAML SSOに対応しています。
- Keycloakはオープンソースの統合ID管理ツールです。OpenID ConnectやSAMLによる認証を提供しています。
以下の環境で確認しています。
- nextcloud 12.0
- Keycloak 3.4.0.Final
具体的な手順
Keycloakで新しいClientを追加します。認証連携したいユーザがいるRealmで作業してください。
- クライアントID:
https://nextcloud.example.com/index.php/apps/user_saml/saml/metadata
- クライアントプロトコル: saml
- クライアント署名が必須: OFF
- 有効なリダイレクト URI:
https://nextcloud.example.com/*
- マッパー
nextcloudで「SSO & SAML authentication」を設定します。
- Attribute to map the UID to:
username
- Identity Provider Data
- Identifier of the IdP entity (must be a URI):
https://keycloak.example.com/auth/realms/YOUR_REALM
- URL Target of the IdP where the SP will send the Authentication Request Message:
https://keycloak.example.com/auth/realms/YOUR_REALM/protocol/saml
- Public X.509 certificate of the IdP: インストレーションでSAML Metadata IDPSSODescriptorを選択するとXMLが表示されるので、<dsig:X509Certificate> 要素に入っているBASE64文字列を入力します。
-----BEGIN CERTIFICATE-----
と-----END CERTIFICATE-----
で囲むのをお忘れなく。
- Identifier of the IdP entity (must be a URI):
- Attribute mapping
- Attribute to map the displayname to:
username
- Attribute to map the email address to:
email
- Attribute to map the displayname to:
なお、SAML SSOを有効にするとローカルユーザでログインできなくなるため、ローカルユーザのウィンドウを開いたまま作業してください。シークレットウィンドウでnextcloudを開いて動作確認するとよいでしょう。
デフォルトでは、SSO後にユーザが存在しない場合は自動的に作成してくれます。
まとめ
KeycloakでID管理を統合すると便利なのでおすすめです。ついでに、バックエンドストレージをS3にしておくとメンテナンスも楽です。