Mad*_*ike 9 saml single-sign-on keycloak nextcloud
我正在尝试将Keycloak设置为IdP(身份提供商),将Nextcloud设置为服务.我想设置Keycloak以呈现SSO(单点登录)页面.
我正在运行带有Intel兼容CPU的Linux服务器.什么是正确的配置?
Mad*_*ike 27
要使用此答案,您需要替换domain.com为您拥有的实际域.也请替换为您的工作电子邮件地址.email@domain.com
假设您已安装并运行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
- LETSENCRYPT_EMAIL=email@domain.com
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
- LETSENCRYPT_EMAIL=email@domain.com
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
Run Code Online (Sandbox Code Playgroud)
我将docker-files放在一个文件夹中,docker并在此文件夹中放置一个项目特定的文件夹.在这里keycloak.创建它们:
mkdir -p ~/docker/keycloak
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml使用此文件夹中的首选编辑器创建-File.启动服务:
cd ~/docker/keycloak
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
等一下,让服务下载并启动.检查一切是否正在运行:
docker-compose ps
Run Code Online (Sandbox Code Playgroud)
如果服务未运行.发出一秒钟docker-compose up -d并再次检查.
打开浏览器并转到https://kc.domain.com.单击管理控制台.如您所指定docker-compose.yml,用户名和密码是admin.
在页面的左上角,您需要创建一个新的Realm.点击Add.输入my-realm作为名称.点击Save.
单击Keys-tab.看看RSA-entry.我们需要复制该行的证书.单击Certificate并将内容复制粘贴到文本编辑器以供以后使用.
打开终端并发出:
openssl req -nodes -new -x509 -keyout private.key -out public.cert
Run Code Online (Sandbox Code Playgroud)
这将创建两个文件:private.key和public.cert我们将在以后需要为nextcloud服务.
打开浏览器并转到https://nc.domain.com.如您所指定docker-compose.yml,用户名和密码是admin.
您需要激活SSO & Saml Authenticate默认情况下禁用的.
重要的从这里不要关闭您的当前直到设置进行了测试和运行的浏览器窗口.如果在一切正常之前关闭浏览器,您可能无法再在nextcloud中更改设置.在这种情况下,您需要停止nextcloud-和nextcloud-db-container,删除它们各自的文件夹,重新创建它们并重新开始.
单击右上角的齿轮符号,然后单击+ Apps-sign.在左侧现在看到带有条目的菜单栏Security.点击它.您现在可以看到所有安全性的应用程序.单击App Activate下方的按钮SSO & SAML authentication.
再次单击右上角的齿轮符号,然后单击Admin.点击SSO & SAML authentication.
使用以下值:
public.cert到"X.509证书"字段中private.key到"服务提供商的私钥"字段中.Keys的-Tab my-realm.您需要在密钥前添加"----- BEGIN CERTIFICATE -----",并在其末尾添加"----- END CERTIFICATE -----".Download metadata XML并保存文件以进行下一步.Metadata valid旁边是否有Download metadata XML
Download metadata XML-Button.这将生成并发送XML文件.保存.再次访问Administror控制台.单击Clients并右键单击Create-Button.
在"导入"旁边,单击" - Select File按钮".选择您在Nextcloud的最后一步创建的XML文件.
更改:
并单击Save.
您将看到一个新屏幕.更改以下字段:
Save在标签上Matters:
Delete预分配上的-Buttonrole listCreate
SaveCreate
SaveUsersAdd usersSaveCredentials:
Reset PasswordChange Password以隐身/私密模式打开新的浏览器窗口.例如.对于google-chrome press Ctrl-Shift-N,在Firefox新闻中Ctrl-Shift-P.保持其他浏览器窗口打开 nextcloud设置页面.否则你可能会把自己锁在外面.
使用隐身/私人浏览器窗口访问https://nc.domain.com.您将看到keycloak用户名/密码页面.输入user名称和密码.你应该在nextcloud欢迎屏幕上受到欢迎.
| 归档时间: |
|
| 查看次数: |
11083 次 |
| 最近记录: |