java - Spring Openid、OpenIDAuthenticationToken

标签 java spring spring-security openid

我正在使用 Spring-Security 的 Openid 通过 google 进行身份验证。我想从谷歌服务器接收电子邮件 ID。所以在我的 spring-security.xml 中我已经设置了

<attribute-exchange>
    <openid-attribute name="email" type="http://schema.openid.net/contact/email" required="true" />
    <openid-attribute name="name" type="http://schema.openid.net/namePerson/friendly" />
</attribute-exchange>

现在我想得到它。据我了解,文档告诉我们使用以下代码。

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

任何人都可以给我编写代码片段以使用此代码取出电子邮件属性吗???

最佳答案

您可以遍历属性列表来查找电子邮件地址,如 the OpenID sample application does .

或者,您可能希望更仔细地遵循示例并使用自定义 UserDetailsS​​ervice 来创建专门的 UserDetails 实例,然后您可以在应用程序中的其他位置访问该实例。

关于java - Spring Openid、OpenIDAuthenticationToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17481140/

相关文章:

java - 使用 Java 8 的 Streams 和 Lambdas 表达式迭代集合时出现问题

java - Spring Data JPA 审核功能在我的项目中不起作用

java - Log4j2 在控制台上打印工作找到,但没有创建日志文件

java - 为什么 Spring 安全会从 keycloak 配置中抛出异常 "FilterOrderRegistration.getOrder is null"?

spring - JWT 签名与本地计算的签名不匹配。 JWT 有效性无法断言,不应被信任

c# - 使用java或其他编程语言将小图标添加到任何文件/文件夹作为Windows中的图标

java - sendkeys(keys.Down) 和 sendkeys(keys.Arrow_Down) 之间的区别

java - 我应该向 Proxy.newProxyInstance(...) 提供哪个 ClassLoader?

java - 盐渍 SHA 类型中的 Spring LDAP 身份验证错误凭据密码

spring - 尝试在 URL 拦截器中设置安全性 ="none"时 SaxParseException