我们必须为SSO集成第三方SP。我们的应用程序是spring的包装器(不是springboot),它具有使用mongo作为DB的调用后端服务的身份验证/授权模块。 现在的要求是将基于SSO SAML的SP与第三方集成。第三方提供了要求具有IDP的文档。在SP提供的要求中,Nameid断言必须是持久的,唯一且不透明的,并且可以是客户端应用程序(我们的应用程序)的用户ID。 我相信我们必须拥有SSOCircle或Okta之类的IDP或一些开源IDP才能与SP集成。而且我认为我们可以编写一个单独的springboot SAML IDP,并将api暴露给我们的旧版spring,以便登录到SP。 据我了解的流程:
我的问题:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
。我认为那可能是文档错误。 [?]。答案 0 :(得分:0)
我们可以(或应该)绕过IDP吗?我想这意味着我们将自己编写SAML IDP。
不,您不能。如果第三方充当SAML服务提供者,则您需要或充当SAML身份提供者。构建自己的实现是一项艰巨的任务,您既可以使用基于SSAS Cirle的基于SAAS的IdP(请注意,您的客户需要接受存储用户身份数据的位置),也可以部署自己的SAML IdP。有付费产品/服务或免费。开源不一定意味着免费,这经常被误解。
如果仍然需要SAML IdP,则可以考虑使自己的应用程序充当SAML SP,以利用IdP的身份验证。
使用哪种NameId格式是一种协议。 SAML规范建议出于特定目的使用特定NameId格式,例如
SP可以在主题中使用NameId值的值来查找用户的个人资料或执行自动联合(在其侧面建立个人资料)。它还可以使用SAML属性语句中的属性来实现相同目的。许多SP实现都提供了这一点。