KeycloakをIdP(IDプロバイダー)として、Nextcloudをサービスとして設定しようとしています。 SSO(シングルサインオン)ページを表示するようにKeycloakをセットアップします。
Intel互換CPUを搭載したLinuxサーバーを実行しています。正しい構成は何ですか?
この回答を使用するには、domain.com
をactualドメインownに置き換える必要があります。また、[email protected]
を実際の電子メールアドレスに置き換えます。
Dockerおよびdocker-composeがインストールされ、実行されていることを前提としています。
Keycloakとnextcloudに加えて、次を使用します。
Dockerとdocker-composeを使用して、必要なすべてのサービスを設定しています。 docker-compose.yml
は次のようになります。
version: '2'
nginx-proxy:
image: jwilder/nginx-proxy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- "/etc/nginx/vhost.d"
- "./proxy-default.conf:/etc/nginx/conf.d/my-proxy.default.conf:ro"
- "/usr/share/nginx/html"
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "./le-cert:/etc/nginx/certs:ro"
labels:
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
letsencrypt-nginx-proxy-companion:
image: jrcs/letsencrypt-nginx-proxy-companion
restart: unless-stopped
depends_on:
- nginx-proxy
container_name: le-proxy-companion
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./le-cert:/etc/nginx/certs:rw"
volumes_from:
- nginx-proxy
keycloak:
image: jboss/keycloak
links:
- keycloak-postgres:postgres
ports:
- 8080:8080
volumes:
- ./keycloak:/opt/jboss/keycloak
environment:
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=admin
- "PROXY_ADDRESS_FORWARDING=true"
- VIRTUAL_PORT=8080
- VIRTUAL_Host=kc.domain.com
- LETSENCRYPT_Host=kc.domain.com
- [email protected]
keycloak-postgres:
image: postgres
environment:
- POSTGRES_DB=keycloak
- POSTGRES_USER=keycloak
- POSTGRES_PASSWORD=keycloak
nextcloud:
image: hoellen/nextcloud
environment:
- UPLOAD_MAX_SIZE=10G
- APC_SHM_SIZE=128M
- OPCACHE_MEM_SIZE=128
- CRON_PERIOD=15m
- TZ=Europe/Berlin
- DOMAIN=nc.domain.com
- ADMIN_USER=admin
- ADMIN_PASSWORD=admin
- DB_TYPE=mysql
- DB_NAME=nextcloud
- DB_USER=nextcloud
- DB_PASSWORD=nextcloud
- DB_Host=nc-db
volumes:
- ./nc/nc-data:/data
- ./nc/nc-config:/config
- ./nc/nc-apps:/apps2
- ./nc/nc-themes:/nextcloud/themes
environment:
- VIRTUAL_Host=nc.domain.com
- LETSENCRYPT_Host=nc.domain.com
- [email protected]
nc-db:
image: mariadb
volumes:
- ./nc/nc-db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=nextcloud
- MYSQL_PASSWORD=nextcloud
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
Dockerファイルをdocker
フォルダーに配置し、このフォルダー内にプロジェクト固有のフォルダーを配置します。ここでkeycloak
。次を使用して作成します。
mkdir -p ~/docker/keycloak
このフォルダーに好みのエディターでdocker-compose.yml
- Fileを作成します。以下を使用してサービスを開始します。
cd ~/docker/keycloak
docker-compose up -d
しばらく待って、サービスをダウンロードして開始します。すべてが実行されているかどうかを確認するには:
docker-compose ps
サービスが実行されていない場合。 2番目のdocker-compose up -d
を発行して、もう一度確認してください。
ブラウザを開いて https://kc.domain.com に移動します。 管理コンソールをクリックします。 docker-compose.yml
で指定されているように、ユーザー名とパスワードはadmin
です。
ページの左上で、新しいRealmを作成する必要があります。 Add
をクリックします。名前としてmy-realmを入力します。 Save
をクリックします。
Keys
-タブをクリックします。 RSA
- entryを見てください。その行の証明書をコピーする必要があります。 Certificate
をクリックし、後で使用するためにコンテンツをテキストエディターにコピーアンドペーストします。
ターミナルを開き、以下を発行します。
openssl req -nodes -new -x509 -keyout private.key -out public.cert
これにより、private.key
およびpublic.cert
の2つのファイルが作成されます。これらは、後でnextcloudサービスに必要になります。
ブラウザを開き、 https://nc.domain.com に移動します。 docker-compose.yml
で指定されているように、ユーザー名とパスワードはadmin
です。
デフォルトで無効になっているSSO & Saml Authenticate
をアクティブにする必要があります。
重要ここから閉じないでくださいcurrentセットアップがテストされ実行されるまでのブラウザウィンドウ。すべてが機能する前にブラウザを閉じると、おそらくnextcloudの設定を変更できなくなります。そのような場合は、nextcloud-containerおよびnextcloud-db-containerを停止し、それぞれのフォルダーを削除し、それらを再作成して、最初からやり直す必要があります。
右上の歯車記号をクリックし、+ Apps
-記号をクリックします。左側にSecurity
というエントリのあるメニューバーが表示されます。クリックして。これで、すべてのセキュリティ関連アプリが表示されます。 SSO & SAML authentication
アプリの下のActivate
ボタンをクリックします。
右上のギアシンボルをもう一度クリックし、Admin
をクリックします。 SSO & SAML authentication
をクリックします。
次の値を使用します。
public.cert
の内容を「X.509証明書」フィールドにコピーしますprivate.key
の内容を「サービスプロバイダーのプライベートキー」フィールドにコピーします。my-realm
のKeys
- tabからKeycloakから証明書をコピーします。キーの前に「----- BEGIN CERTIFICATE -----」を追加し、キーの最後に「----- END CERTIFICATE -----」を追加する必要があります。Download metadata XML
をクリックし、次のステップのためにファイルを保存します。Metadata valid
-ボタンの横にDownload metadata XML
があることを確認します Download metadata XML
-ボタンをクリックします。これにより、XMLファイルが生成および送信されます。それを保存。管理コンソールに再度アクセスします。 Clients
をクリックし、右上のCreate
-ボタンをクリックします。
[インポート]の横にある[Select File
-]ボタンをクリックします。 Nextcloudの最後のステップで作成したXMLファイルを選択します。
変化する:
Save
をクリックします。
新しい画面が表示されます。次のフィールドを変更します。
Save
をクリックしますタブMatters
で:
role list
のDelete
-ボタンをクリックしますCreate
[.____]をクリックします。Save
をクリックしますCreate
[.____]をクリックします。Save
をクリックしますUsers
をクリックしますAdd users
]をクリックしますSave
をクリックしますCredentials
:: Reset Password
をクリックしますChange Password
をクリックしますシークレットモード/プライベートモードで新しいブラウザウィンドウを開きます。例えば。 google-chromeの場合はCtrl-Shift-N
を押し、Firefoxの場合はCtrl-Shift-P
を押します。 Keepnextcloudセットアップページopenで他のブラウザウィンドウを保持します。それ以外の場合は、ロックアウトする可能性があります。
シークレット/プライベートブラウザウィンドウで https://nc.domain.com にアクセスします。キークロークのユーザー名/パスワードのページが表示されます。名前とパスワードとしてuser
を入力します。 nextcloudのようこそ画面が表示されます。
次に、nextcloud 15/16のわずかに更新されたバージョンを示します。
ブラウザを開いて https://kc.domain.com に移動します。管理コンソールをクリックします。 docker-compose.ymlで指定されているように、ユーザー名とパスワードはadminです。
ページの左上で、新しいレルムを作成する必要があります。追加をクリックします。名前としてmy-realmを入力します。保存をクリックします。
[キー]タブをクリックします。 RSAエントリを見てください。その行の証明書をコピーする必要があります。 [証明書]をクリックし、後で使用するためにコンテンツをテキストエディターにコピーアンドペーストします。 Nextcloudの秘密キーと証明書を準備する
ターミナルを開き、以下を発行します。
openssl req -nodes -new -x509 -keyout private.key -out public.cert
これにより、private.keyとpublic.certの2つのファイルが作成されます。これらは、後でnextcloudサービスに必要になります。 Nextcloudを構成する
ブラウザを開き、 https://nc.domain.com に移動します。 docker-compose.ymlで指定されているように、ユーザー名とパスワードはadminです。
デフォルトで無効になっているSSOとSaml認証を有効にする必要があります。
重要ここからは、セットアップがテストされ実行されるまで、現在のブラウザーウィンドウを閉じないでください。すべてが機能する前にブラウザを閉じると、おそらくnextcloudの設定を変更できなくなります。そのような場合は、nextcloud-containerおよびnextcloud-db-containerを停止し、それぞれのフォルダーを削除し、それらを再作成して、最初からやり直す必要があります。
右上の歯車記号をクリックしてから、+アプリ記号をクリックします。左側に[セキュリティ]エントリのあるメニューバーが表示されます。クリックして。これで、すべてのセキュリティ関連アプリが表示されます。 SSOおよびSAML認証アプリの下の[アクティブ化]ボタンをクリックします。
右上のギアシンボルをもう一度クリックし、[管理]をクリックします。 [SSOとSAML認証]をクリックします。
次の値を使用します。
Attribute to map UID to:username
Enable "Use SAML auth for the Nextcloud desktop clients (requires user re-authentication)"
Copy the content ofpublic.cert into the 'X.509 Certificate'-field
Copy the content ofprivate.key into the 'Private key of Service Provider'-field.
Identifier of the IdP: https://kc.domain.com/auth/realms/my-realm
URL Target of the IdP where the SP will send the Authentication Request Message: https://kc.domain.com/auth/realms/my-realm/protocol/saml
URL Location of IdP where the SP will send the SLO Request: https://kc.domain.com/auth/realms/my-realm/protocol/saml
Public X.509 certificate of the IdP: Copy the certificate from Keycloak from the Keys-tab of my-realm. You will need to add '-----BEGIN CERTIFICATE-----' in front of the key and '-----END CERTIFICATE-----' to the end of it.
In Identity Provider Data:
Attribute, displayname: username
Attribute, email adress: email
Attribute, Quota: nextcloudquota
Click Download metadata XML and save the file for the next step.
Security Settings, enable the following options:
Indicates whether the messages sent by this SP will be signed. [Metadata of the SP will offer this info]
Indicates whether the messages sent by this SP will be signed.
Indicates whether the messages sent by this SP will be signed.
Indicates a requirement for the , and elements received by this SP to be signed.
Indicates a requirement for the elements received by this SP to be signed. [Metadata of the SP will offer this info]
Check there is a Metadata valid beside the Download metadata XML-Button
Click the Download metadata XML-Button. This generate and send a XML file. Save it.
Keycloak、クライアントの構成
管理コンソールに再度アクセスします。 [クライアント]をクリックし、右上の[作成]ボタンをクリックします。
[インポート]の横にある[ファイルの選択]ボタンをクリックします。 Nextcloudの最後のステップで作成したXMLファイルを選択します。
変化する:
Client SAML Endpoint: https://kc.domain.com/auth/realms/my-realm
[保存]をクリックします。
新しい画面が表示されます。次のフィールドを変更します。
Name: Nextcloud
Valid Redirect URIs: https://nc.domain.com/ *
Click Save
タブ事項:
Click Delete-Button on the preassigned role list
Click Create
Name: username
Mapper Type: User Property
Property: username
SAML Attribute Name: username
SAML Attribute NameFormat: Basic
Click Save
Click Create
Name: email
Mapper Type: User Property
Property: email
SAML Attribute Name: email
SAML Attribute NameFormat: Basic
Click Save
作成をクリックします
Name: Roles
Mapper Type: Role List
Role attribute name: Roles
Friendly Name: roles
SAML Attribute NameFormat: Basic
Single Role Attrubute: On
Click Save
作成をクリックします
Name: nextcloudquota
Mapper Type: User Property
Property: nextcloudquota
SAML Attribute Name: nextcloudquota
SAML Attribute NameFormat: Basic
Click Save
Keycloakの構成、ユーザーの追加
On the left side, click on Users
On the top-right, click Add users
Set the following values:
Username: user
Email: [email protected]
Click Save
On the tab Credentials:
New Password: user
Password Confirmation: user
Temporary: Off
Click Reset Password
A Window pops up:
Click Change Password