根据本教程,我正在使用spring boot构建一个oauth2认证应用程序:https://spring.io/guides/tutorials/spring-boot-oauth2/
在某一点上,端点/用户发回当前登录的用户。
指南警告说:
“在端点中返回整个OAuth2用户不是一个好主意,因为它可能包含您不想向浏览器客户端透露的信息。”
但是它没有提供更多的信息——我不应该向浏览器客户端透露什么类型的信息?
谢谢
根据本教程,我正在使用spring boot构建一个oauth2认证应用程序:https://spring.io/guides/tutorials/spring-boot-oauth2/
在某一点上,端点/用户发回当前登录的用户。
指南警告说:
“在端点中返回整个OAuth2用户不是一个好主意,因为它可能包含您不想向浏览器客户端透露的信息。”
但是它没有提供更多的信息——我不应该向浏览器客户端透露什么类型的信息?
谢谢
1条答案
按热度按时间33qvvth11#
在SpringSecurity5.x中
OAuth2User
这是一个具体的问题OAuth2AuthenticatedPrincipal
(非常类似于UserDetails
但没有任何密码的概念)。即使没有密码,公开密码也可能(而且通常会)泄露敏感信息、身份验证方案的实施细节等。如果您愿意,您可以公开密码,但指南中的警告建议应小心,不要公开任何被认为敏感的信息,在直接暴露之前,你应该考虑其他选择。例如,您可以考虑创建
CustomUser
类中的声明填充的OAuth2User
使用自定义OAuth2UserService
(文档高级配置部分中的各种示例)。您还可以采取各种步骤将spring security中的oauth2用户表示与应用程序中的用户表示分离(例如,通过使用@authenticationprincipal来解析您自己的自定义用户或访问声明)。如果应用程序本身不需要自定义用户,则只需MapOAuth2User
在自定义端点中创建响应,如指南中所示。最后,您可以将所有这些技术结合起来,使您的
/user
端点又是一个“一行线”,如: