对于最新的稳定版本,请使用 Spring Security 6.3.1Spring中文文档

对于最新的稳定版本,请使用 Spring Security 6.3.1Spring中文文档

OpenID 1.0 和 2.0 协议已被弃用,鼓励用户迁移到 spring-security-oauth2 支持的 OpenID Connect。

命名空间支持 OpenID 登录,而不是基于表单的普通登录,或者除了普通表单登录之外,只需进行简单的更改:Spring中文文档

<http>
<intercept-url pattern="/**" access="ROLE_USER" />
<openid-login />
</http>

然后,您应该向 OpenID 提供商(例如 myopenid.com)注册自己,并将用户信息添加到内存中:<user-service>Spring中文文档

<user name="https://jimi.hendrix.myopenid.com/" authorities="ROLE_USER" />

您应该能够使用该站点登录进行身份验证。 也可以通过设置元素上的属性来选择特定的 Bean 来使用 OpenID。 请注意,我们从上述用户配置中省略了密码属性,因为这组用户数据仅用于加载用户的权限。 将在内部生成一个随机密码,防止您意外地将此用户数据用作配置中其他位置的身份验证源。myopenid.comUserDetailsServiceuser-service-refopenid-loginSpring中文文档

OpenID 1.0 和 2.0 协议已被弃用,鼓励用户迁移到 spring-security-oauth2 支持的 OpenID Connect。

属换

支持 OpenID 属换。 例如,以下配置将尝试从 OpenID 提供程序检索电子邮件和全名,以供应用程序使用:Spring中文文档

<openid-login>
<attribute-exchange>
	<openid-attribute name="email" type="https://axschema.org/contact/email" required="true"/>
	<openid-attribute name="name" type="https://axschema.org/namePerson"/>
</attribute-exchange>
</openid-login>

每个 OpenID 属性的“类型”都是一个 URI,由特定架构确定,在本例中为 https://axschema.org/。 如果必须检索某个属性才能成功进行身份验证,则可以设置该属性。 支持的确切架构和属性将取决于您的 OpenID 提供程序。 属性值将作为身份验证过程的一部分返回,之后可以使用以下代码进行访问:requiredSpring中文文档

OpenIDAuthenticationToken token =
	(OpenIDAuthenticationToken)SecurityContextHolder.getContext().getAuthentication();
List<OpenIDAttribute> attributes = token.getAttributes();

我们可以从 SecurityContextHolder 获取。 包含属性类型和检索到的值(如果是多值属性,则为值)。 您可以提供多个元素,每个元素都使用属性。 它包含一个正则表达式,该表达式将与用户提供的 OpenID 标识符匹配。 有关示例配置,请参阅代码库中的 OpenID 示例应用程序,该示例为 Google、Yahoo 和 MyOpenID 提供程序提供不同的属性列表。OpenIDAuthenticationTokenOpenIDAttributeattribute-exchangeidentifier-matcherSpring中文文档