DSM 7.2 SSO 单点登录问题排查

由于安全性限制,请确保SSO服务器有受信任的HTTPS证书

部署Fiddler抓包环境

Fiddler 下载地址:

https://www.telerik.com/download/fiddler-everywhere

链接: https://pan.baidu.com/s/1Y0eIqN7Uo3izRTyl-TusDg?pwd=y37w 提取码: y37w 复制这段内容后打开百度网盘手机App,操作更方便哦

Windows 安装配置抓包软件

选择 Sigin ,打开浏览器:

选择 Skip :

在右上角设置中,在 HTTPS 点击 Trust Fiddler CA ,导入完成后勾选 Capture HTTPS traffic 并保存

Advanced Settings 点击导出更多,选择 Export Fiddler CA (PEM/ASCII format)

在桌面找到导出的 pem 文件,可以通过记事本打开记录其中的证书内容。

Connections 中记录 Fiddler listens on port 的端口
需要勾选以下三个选项 Enable HTTP/2 support Allow remote devices to connect Keep it ON after app restart 并保存

NAS配置

在NAS的控制面板 -> 网络 -> 常规 中勾选 通过代理服务器连接
填写Windows的 IP 地址与 Fiddler listens on port 的端口:

为NAS系统添加Fiddler的证书,需要参考以下教程使用登录NAS的SSH并切换到root:
https://kb.synology.cn/zh-cn/DSM/tutorial/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet

编辑 ca-certificates.crt

vi /etc/ssl/certs/ca-certificates.crt

将导出的 pem 文件中的证书内容添加到文件的最后:

测试Fiddler功能

在NAS端打开外部访问的 DDNS :

查看Windows的Fiddler是否可以正常获取到,如果依然显示https不信任请重启Fiddler:

OIDC认证

Synology 案例

https://kb.synology.cn/zh-cn/DSM/tutorial/set_up_oidc_for_dsm_in_sso_server

先查看openid-configuration中的scopes_supportedclaims_supporte

NAS端配置,需要额外在授权范围填写openid 用户名声明填写username

Fiddler 抓包找到/webman/sso/SSOUserInfo.cgi
需要确保返回内容中sub或者username名称,在NAS或者域中有相同的账号:

飞书案例

飞书配置,需要勾选:
Scope:profile
Token算法:RS256
换取Token方式:client_secret_post

NAS端配置,需要在授权范围填写openid profile 用户名声明填写name

Fiddler 抓包内容,需要确保返回内容中name或者another_name名称,在NAS或者域中有相同的账号:

SAML认证

Synology 案例

https://kb.synology.cn/zh-cn/DSM/tutorial/set_up_saml_for_dsm_in_sso_server

NAS端配置

Fiddler 抓包当前电脑浏览器找到/webman/sso/SSOOauth.cgi?SAMLRequest=

选择SAMLResponse的内容并进行解码:

使用Base64解码器:

需要确保返回内容中saml:NameID在NAS或者域中有相同的账号:

Azure AD

请参考以下官方文档进行配置:

https://kb.synology.cn/zh-cn/DSM/tutorial/How_to_activate_Entra_ID_SAML_SSO

如果用户的userprincipalname无法匹配账号:

https://learn.microsoft.com/zh-tw/entra/identity/hybrid/connect/plan-connect-userprincipalname

可以通过以下命令在加入Azure AD的NAS查询域用户的具体参数(例如需要查询testuser用户):

net ads search sAMAccountName=testuser -P

如果发现MailNickName匹配可以参考以下教程将user.userprincipalname调整为user.mailnickname:

https://learn.microsoft.com/zh-tw/entra/identity/saas-apps/figma-tutorial

FORTINET案例

飞塔的SSO无法识别NAS默认的声明,但是NAS的SSO server支持添加自定义声明,这边只需要额外增加用户名和用户群组的自定义声明并添加到飞塔中即可。

<saml:AttributeStatement>
<saml:Attribute Name="test1" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue xsi:type="xs:string">synouser3@openzhugh.local</saml:AttributeValue></saml:Attribute>
<saml:Attribute Name="test2" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue xsi:type="xs:string">synouser3</saml:AttributeValue></saml:Attribute>
<saml:Attribute Name="test3" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"><saml:AttributeValue xsi:type="xs:string">team1@openzhugh.local</saml:AttributeValue></saml:Attribute>
</saml:AttributeStatement>

CAS认证

泛微案例

配置CAS认证

服务器验证URL可能是这四个中的一个,详情需要咨询泛微并查看对接手册:

https://doamin.com/sso/serviceValidate
https://doamin.com/sso/v1/tickets
https://doamin.com/cas/Validate
https://doamin.com/oauth/proxyValidate
https://doamin.com/papi/sso/cas/serviceValidate

NAS端配置:

服务器URL:

https://doamin.com/sso/login?appid=d4****f

服务器验证URL:

https://doamin.com/sso/serviceValidate

Fiddler 抓包找到链接/sso/serviceValidate

需要确保返回内容中loginid名称,在NAS或者域中有相同的账号:

如果/sso/serviceValidate返回未能够识别出目标请咨询泛微调整服务器配置档:

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
    <cas:authenticationFailure code='INVALID_TICKET'>
        未能够识别出目标 &#039;ST-7-M3SdoI7jAQssNA7TOBwk-c01&#039;票根
    </cas:authenticationFailure>
</cas:serviceResponse>