springsecuritysaml2.0-如何在系统中注册所有用户



我想在我的web应用程序中使用SAML 2.0实现SSO。我见过春天安全saml的例子[https://github.com/spring-projects/spring-security-saml.git]。在我浏览了这个样本后,有几件事我想知道:

  1. 我是否必须像本示例中那样将所有用户注册重定向到IDP的注册页面?如果没有,IDP如何知道用户的凭据
  2. IDPs类似的ssocircle(在本示例中使用(是否允许我们使用自定义属性和更改密码之类的场景
  3. 在我的应用程序中,用来实现samlso的最佳IDP是什么

提前Thanx。

Q我是否必须像本示例中那样将所有用户注册重定向到IDP的注册页面?

用SAML的说法,应用程序可以是身份提供者(IDP(或服务提供者(SP(。IDP对用户进行身份验证,这意味着用户身份和凭据由IDP维护。SP向用户提供一个或多个服务。

从您的问题来看,您似乎想将验证应用程序用户的任务委托给外部方(IDP(。因此,您的应用程序将是SP。

建立后,您将不得不将所有用户重定向到IDP进行身份验证。如果需要,IDP的身份验证页面可以具有到注册页面的链接。

QIDP如何知道用户的凭据?

用户必须向IDP注册(毕竟,IDP的目的是权威地验证用户的身份,如果用户没有向其注册,则无法进行验证(。用户可以自行注册,也可以由管理员(如Microsoft Active Directory域管理员(注册。

Q如果我也需要在我的系统中注册用户,因为我需要为他们分配特定于我的系统的角色,该怎么办?

您可以创建自己的org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler实现,在其中您可以在成功单次登录时检查经过身份验证的用户,并将他们注册到您的应用程序中。提供实现类的实例作为SAML入口点的重定向处理程序。

请注意,您将无法访问用户的密码,因为该密码由IDP存储。

Q像SSOCircle这样的IDP允许我们使用自定义属性吗?

SSOCircle主要是针对SSO(单点登录(的测试服务。虽然SAML支持自定义属性,但SSOCircle仅支持FirstNameLastNameEmailAddress(截至2016年2月(。因此,不能将其他自定义属性与SSOCircle一起使用。

像Okta、OneLogin或Microsoft ADFS这样的实际IDP确实支持自定义属性。您必须查看各自的文档,以便在IDP和SP之间配置和交换自定义属性。

Q像SSOCircle这样的IDP支持更改密码的场景吗?

我不确定SSOCircle,但实际的IDP将是一个已经具有用户身份管理功能的系统。由于密码更改是身份管理系统的常见功能,因此实际IDP应支持此功能。但是,您应该查阅您使用的实际IDP的文档以确保。

Q我的SAML应用程序使用的最佳IDP是什么?

IDP不是产品或规范,这使得这个问题有些无效。它只是SAML宇宙中的一种演员。如果用户是Microsoft Windows Active Directory林的一部分,则可以使用Active Directory联合身份验证服务(ADFS(在Active Directory和(SP(应用程序之间交换SAML消息。

如果您想支持多个Active Directory林,或者您事先不知道用户的位置,您可以使用基于委派的服务,如Okta或OneLogin,这允许您的应用程序从委派服务接收传入断言。

最新更新