SSO 和 IdentityServer 以及需要 SAML 和 JWT 的服务

Posted

技术标签:

【中文标题】SSO 和 IdentityServer 以及需要 SAML 和 JWT 的服务【英文标题】:SSO and IdentityServer with services that expect SAML and JWT 【发布时间】:2018-04-30 19:07:28 【问题描述】:

我将 IdentityServer4 与 OpenID Connect 和 OAuth2 一起使用。

我需要为一些支持 SAML 的旧服务启用 SSO。

有人能解释一下(或给我推荐一篇好文章)解释如何实现这一点吗?

我是否需要从 IdentityServer 请求一个 SAML 令牌以获得我可以传递给旧服务的 JWT 令牌?或者我可以将 SAML 令牌嵌入到 JWT ID 令牌中,然后可以将其提取并传递给旧服务?

【问题讨论】:

嘿@DaImTo 感谢您的回复。但该链接用于“使用密码保护 API”。我不确定这与在需要 SAML 令牌的服务和需要 JWT 的服务之间支持 SSO 有什么关系? 在这里寻找类似的解决方案。基本上有人可以指出在 IdentityServer 中生成 SAML 令牌的最佳方法,因为它提供了有效且受信任的 JWT 令牌以进行交换? 【参考方案1】:

您需要 IdentityServer4 的 SAML2P 插件,https://leastprivilege.com/2017/10/13/saml2p-identity-provider-support-for-identityserver4/ 有一个实验版本

【讨论】:

嗨@Anders,我想在多个网站和本机平板电脑应用程序中启用 SSO。旧版网站仅支持 SAML,而较新的本机应用程序支持 OpenId Connect。因此,我无法将 JWT 从本机应用程序传递到网站或将 SAML 令牌从网站传递到本机应用程序。我已阅读有关 SAML2P 的可用材料,但看不到任何讨论此用例的文档。我在这里需要 SAML2P 吗? 嗨@Anders 只是想我会看看你有什么建议吗?【参考方案2】:

正如@Anders 所说,Rock Solid Knowledge 开发了一个测试版。

目前仅处理客户端 SAML。

您的具体用例是什么?

【讨论】:

嗨@nzpcmad,我想跨多个网站和原生平板电脑应用启用SSO。旧版网站仅支持 SAML,而较新的本机应用程序支持 OpenId Connect。因此,我无法将 JWT 从本机应用程序传递到网站或将 SAML 令牌从网站传递到本机应用程序。 嗨 @nzpcmad 只是想我会看看你有什么建议吗? 你能记录你的用例吗?应用程序。 --> OIDC --> ADFS 或应用程序。 --> SAML -> ADFS 或应用程序 --> ADFS --> SAML --> 另一个 IDP。

以上是关于SSO 和 IdentityServer 以及需要 SAML 和 JWT 的服务的主要内容,如果未能解决你的问题,请参考以下文章

如果用户从 IdentityServer4 中的另一个浏览器/设备登录,如何检测并从应用程序中注销用户?

IdentityServer3

一步一步学习IdentityServer3

OIDC - 使用 IdentityServer3 和 Spring Boot 实现 OAuth2

IdentityServer:远程证书根据验证程序无效

UserManager<TUser>管理用户,如何修改identity默认hash加密算法