群晖SSO(单点登录)开发

群晖的开发文档有点坑。要想在DSM(群晖操作系统)设置单点登录服务器,必须开启机器的LDAP。这点在开发文档中完全没提到…不过想想,谁会用这垃圾玩意呢?

开始之前,你需要一台群晖,黑的也行。

第一步,在套件中心安装SSO服务器,如图。

安装sso服务器
安装sso服务器

第二步,在套件中心安装LDAP,如图。

安装LDAP服务器
安装LDAP服务器

第三步,设置LDAP服务器,如图。

设置LDAP服务器
作为LDAP主服务器

第四步,在LDAP Server配置sso用户账户,密码,以及权限。当然,如果在SSO服务器中开启“允许本地账户登录”就可以忽略这一步,否则SSO用户账户是需要单独设置的。

添加账户
添加账户
设置账户详情
设置账户详情
设置账户分组
设置账户分组

第五步,在控制面板-域/LDAP,开启LDAP。开启前需要到LDAP SERVER的用户账号先修改admin的密码,要用到。这个admin和控制面板的admin是不一样的。如图

开启DSM的LADP
开启DSM的LADP
设置LADP用户账号
设置LADP用户账号(在旧版本群晖中,此账号与DSM分离)

第六步,回到SSO服务器,设置登录页面

sso常规设置
sso常规设置

第七步,站点编写源码

群晖sso登录只能支持JavaScript,微微可惜。

群晖ssoDemo目录结构
群晖ssoDemo
登录页面Demo
登录页面Demo
jsDemo
jsDemo

在js中需要修改认证服务器地址(oauthserver_url),app_id,回调地址(redirect_uri)。app_id需要和SSO服务器中的设置保持一致。如图

ssoServer,设置重定向url和appid
ssoServer,设置重定向url和appid

效果如下

登录示例
登录示例

访问我的github页面来获取源码 https://github.com/xinjiawei/SynologySsoDemo

  1. comment_author_avatar kookse说道:

    谢谢分享 现在刚好在做基于dsm的开发,能加个Q或者微信交流下么?465-034-110

  2. comment_author_avatar Gacenwinl说道:

    真的太棒了!群晖的文档都没头没尾QAQ,根本搞不懂。看这个教程一下就成功了。不过有没有给Docker应用访问页面添加单点登录的方法?(就是加各自端口号访问的那个...)

    1. comment_author_avatar XINJIAWEI说道:

      docker还没做过项目哈,不过应该是同样的道理,可以尝试移植一下 :haha:

    2. comment_author_avatar z koala说道:

      我也想把nas里的服务全都做成单点登录 似乎很难

      1. comment_author_avatar XINJIAWEI说道:

        的确,一个一个做不是太好做,很蛋疼

    3. comment_author_avatar xiaofei说道:

      我也是群晖到了站点编写源码哪里就不会了,应用id是什么是不是还要其他平台支持才可以

      1. comment_author_avatar XINJIAWEI说道:

        不是哈,只是应用id,编写的时候和sso那里一致就可以了。
        说实话这玩意不太好用,前端鉴权应用场景少,我这边现在已经全线转LDAP了。

        1. comment_author_avatar xiaofie说道:

          好的,谢谢楼主,现在搞明白,这个就是群晖内置的,可以直接建账号登录。后面我尝试用azure sso功能用微软账户登录群晖,最后一步加入不了自定义域 :lei:

          1. comment_author_avatar XINJIAWEI说道:

            应该可以吧?倒是没研究过

发表回复

您的电子邮箱地址不会被公开。

1 + 8 =