spring-security-saml 2.0 - 如何注册系统中的所有用户?

问题描述:

我想在我的web应用程序中使用SAML 2.0实现SSO。我见过spring-security-saml示例[https://github.com/spring-projects/spring-security-saml.git]。在我通过此示例后,有几件事情想知道:spring-security-saml 2.0 - 如何注册系统中的所有用户?

  1. 我是否必须将所有用户注册表重定向到IDP的注册页面?如果没有,IDP如何知道用户的凭证?
  2. 国内*者的像ssocircle(在本示例中使用)是否允许我们使用自定义属性并更改密码种类的情况?
  3. 什么是在我的应用程序中用来实现saml sso的最佳IDP?

Thanx提前。

问:我必须所有用户registratons到IDP的注册页面重定向,因为这样本?

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

从您的问题看来,您似乎希望将应用程序的用户身份验证任务委派给外部用户(IDP)。因此,您的应用程序将是SP。

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

问: IDP如何知道用户的凭证?

用户必须向IDP注册(毕竟,IDP的目的是对用户的身份进行授权认证,如果用户未注册用户的身份则不能这样做)。用户可以自行注册或由管理员注册,例如Microsoft Active Directory域管理员。

问:如果我需要注册在我的系统用户,以及因为我需要给他们分配具体到我的系统角色?

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

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

问: IDP的SSOCircle是否允许我们使用自定义属性?

SSOCircle主要是SSO(单点登录)的测试服务。尽管SAML支持自定义属性,但SSOCircle仅支持FirstNameLastNameEmailAddress(截至2016年2月)。因此不,你不能在SSOCircle中使用其他的自定义属性。

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

问:执行IDP的喜欢SSOCircle支持更改密码样的情景?

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

问:什么是用于我的SAML应用程序的最佳IDP?

IDP不是一个产品或规范,使这个问题有些无效。它只是SAML Universe中的一种类型的演员。如果您的用户属于Microsoft Windows Active Directory林,则可以使用Active Directory Federation Services (ADFS)在Active Directory和您的(SP)应用程序之间交换SAML消息。

如果你想支持多个Active Directory林,或者如果你事先不知道你的用户将是,你可以使用基于委托服务,如OktaOneLogin,这让你的应用程序,才能从传入断言代表团服务。