在DSM 7.2中由于安全性限制synology只允许使用https的sso server,该教程提供部署https的keycloak并使用OIDC方式链接到NAS。
参考文档
https://www.keycloak.org/server/configuration
环境
DS3622xs+
DSM 7.2.2 up3
keycloak版本:
26.2.1
域使用的是Synology的LDAP
NAS和keycloak加入同一个Synology LDAP
官方容器下载地址:
https://hub.docker.com/r/keycloak/keycloak
本教程使用的是VMware keycloak:
https://hub.docker.com/r/bitnami/keycloak
准备证书
这边测试使用synology.me域名解析及证书。
将域名解析到NAS的内网IP:
并申请对应synology.me域名证书:
将synology.me域名证书导出:
导出的证书文件中只需要以下三个文件:
为了简便部署,只需要将中间证书的内容添加到证书内容后就可以正常工作:
在docker下新建cert子文件夹
并将合并后的证书与秘钥添加到该文件夹中:
配置容器
先下载keycloak镜像,点击运行:
端口设置中需要将keycloak的8080端口与8443映射到NAS(这边分别映射到38080与38443)
存储空间需要将证书所在文件夹映射到容器内(这边是将/docker/cert映射到容器内的/cert)
在环境中需要配置以下变量。
管理员用户名:
KC_BOOTSTRAP_ADMIN_USERNAME
管理员密码:
KC_BOOTSTRAP_ADMIN_PASSWORD
数据库提供商:
KEYCLOAK_DATABASE_VENDOR
dev-file
启用http:
KC_HTTP_ENABLED
true
配置证书路径:
KC_HTTPS_CERTIFICATE_FILE
/cert/cert.pem
KC_HTTPS_CERTIFICATE_KEY_FILE
/cert/privkey.pem
配置完成后如下:
查看HTTP是否可以正常访问:
HTTPS是否可以正常访问并且证书为安全:
配置keycloak
加入Synology LDAP
在User federation选择加入LDAP
Vendor为Active Directory
Connection为安装LDAP server的NAS IP
Bind type为simple
Bind DN为LDAP server的Bind DN
Bind credentials为LDAP server的密码
配置如下:
Edit mode为READ_ONLY
Users DN为LDAP server的Bind DN
去除uid=root
Username LDAP attribute与RDN LDAP attribute保持cn
UUID LDAP attribute为uidNumber
User object classes为organizationalPerson
Pagination为off
查看用户中,域用户是否有正常同步到keycloak
配置OIDC
在Clients中新建client:
选择client类型为openID connect (OIDC)
配置自定义Client ID
启用客户端验证:
Root URL配置为NAS的https访问地址
Valid redirect URIs配置为NAS的https访问地址加上/*
NAS配置OIDC服务
在控制面板->域/LDAP->SSO 客户端->启用OpenID Connect 并在设置中选择OIDC:
获取well-known URL:
在keycloak的realm settings中打开openID endpoint configuration:
查看是否可以正常打开:
获取应用程序ID:
打开对应OIDC client查看client ID
获取应用程序秘钥:
打开对应OIDC client在credentials中查看Client Secret
重定向URL为NAS的https访问地址
授权范围为openid profile
用户声名为name