此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Security 6.3.3! |
此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Security 6.3.3! |
OpenID 1.0 和 2.0 协议已被弃用,鼓励用户迁移到 spring-security-oauth2 支持的 OpenID Connect。 |
命名空间支持 OpenID 登录,可以代替基于表单的普通登录,也可以作为 OpenID 登录的补充,只需进行简单的更改:
<http>
<intercept-url pattern="/**" access="ROLE_USER" />
<openid-login />
</http>
然后,您应该向 OpenID 提供商(例如 myopenid.com)注册自己,并将用户信息添加到您的内存中:<user-service>
<user name="https://jimi.hendrix.myopenid.com/" authorities="ROLE_USER" />
您应该能够使用该站点登录以进行身份验证。
还可以通过在元素上设置属性来选择特定的 bean 以使用 OpenID。
请注意,我们在上述用户配置中省略了 password 属性,因为这组用户数据仅用于为用户加载权限。
将在内部生成一个随机密码,以防止您意外地将此用户数据用作配置中其他位置的身份验证源。myopenid.com
UserDetailsService
user-service-ref
openid-login
OpenID 1.0 和 2.0 协议已被弃用,鼓励用户迁移到 spring-security-oauth2 支持的 OpenID Connect。 |
属换
支持 OpenID 属换。 例如,以下配置将尝试从 OpenID 提供程序检索电子邮件和全名,以供应用程序使用:
<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 提供商。
属性值作为身份验证过程的一部分返回,之后可以使用以下代码进行访问:required
OpenIDAuthenticationToken token =
(OpenIDAuthenticationToken)SecurityContextHolder.getContext().getAuthentication();
List<OpenIDAttribute> attributes = token.getAttributes();
我们可以从 SecurityContextHolder 获取 。
该包含属性类型和检索到的值(或多值属性中的值)。
您可以提供多个元素,每个元素都有一个属性。
它包含一个正则表达式,该表达式将与用户提供的 OpenID 标识符进行匹配。
有关示例配置,请参阅代码库中的 OpenID 示例应用程序,其中为 Google、Yahoo 和 MyOpenID 提供程序提供了不同的属性列表。OpenIDAuthenticationToken
OpenIDAttribute
attribute-exchange
identifier-matcher