基于ADFS/IdentityServer4的SSO架构多信任实现可行性咨询
基于ADFS与IdentityServer4的多信任体系实现方案
结论先行
完全可行,不用迁移任何服务提供商(SP),通过双向联邦信任配置就能让ADFS_0和你的IdentityServer4(ADFS_1)处于同一信任体系,同时保留各自原有SP的信任关系,实现跨STS的令牌互认。
具体操作步骤
- 给两个STS配置双向联邦信任
- 在ADFS_0里,把IdentityServer4加为声明提供者:导入IdentityServer4的元数据地址,设置好声明映射规则,让ADFS_0认可它签发的令牌。
- 在IdentityServer4里,把ADFS_0加为外部身份提供者:用WS-Federation协议对接ADFS_0的元数据,配置好令牌验证逻辑,让IdentityServer4信任ADFS_0的令牌。
- 保留原有SP的信任关系不动
- ADFS_0下的SP继续和ADFS_0保持信任,直接向它请求令牌就行,不用改任何配置。
- IdentityServer4下的SP也照旧和它对接,不用迁移到ADFS_0。
- 实现跨STS的无缝SSO
- 用户从ADFS_0登录后,访问IdentityServer4下的SP时,IdentityServer4会自动验证ADFS_0的令牌,直接给SP发有效令牌,不用用户再登录一次。
- 反过来,用户从IdentityServer4登录后访问ADFS_0下的SP,ADFS_0验证IdentityServer4的令牌后,也会直接签发对应SP的令牌。
要注意的关键点
- 声明要对齐:两个STS之间的核心声明(比如用户ID、角色)格式和内容得统一,不然SP可能因为声明不匹配拒绝授权。
- 证书要互信:两个STS得互相信任对方的签名证书,要么导入根证书,要么直接用元数据里的证书。
- 协议要匹配:ADFS支持WS-Federation和SAML 2.0,IdentityServer4对这俩协议都支持,对接时选一致的协议就行。
内容的提问来源于stack exchange,提问作者nzim
相关产品推荐
相关产品推荐

