【发布时间】:2016-08-20 11:48:42
【问题描述】:
我正在使用 Spring Boot、Spring MVC 和 spring-security-oauth2 创建网站,并且正在尝试针对 Google、Facebook、GitHub ... OAuth2 服务对本地存储的用户进行身份验证。我也有他们的标准用户名密码。
我的想法是从第一次成功的 oauth 登录将每个用户的 [OAuth2_provider_type,OAuth2_subjectId] 对存储到本地数据库,然后在用户再次通过 Google(或 FB ...)验证自己时使用这对找到正确的用户.我已经通过 Google/Facebook 正确地进行了身份验证,但我不知道如何将本地存储的用户连接到 Spring OAuth2 Security 并将他们带到 SecurityContext。
有人能指出我可以看到类似内容的示例或集成测试吗?
在这里我找到了很棒的教程 Spring Boot and OAuth2,在 如何添加本地用户数据库 部分有提示。尝试从 Google 重定向到 授权重定向 URI http://localhost:10001/user 端点,该端点定义为 .antMatchers("/user").authenticated() 并获得 Access Denied
o.s.s.w.a.i.FilterSecurityInterceptor - Secure object: FilterInvocation: URL: /user?state=Wj7RVk&code=4/wa2AFtJr0K3cKTxDAYo8rTOu2p41km5o3YCPnimx4wU; Attributes: [authenticated]
o.s.s.w.a.i.FilterSecurityInterceptor - Previously Authenticated: org.springframework.security.authentication.AnonymousAuthenticationToken@6fa8940c: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@fffde5d4: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: 5888363FA9E329992073DCE4B21E8B5C; Granted Authorities: ROLE_ANONYMOUS
o.s.s.access.vote.AffirmativeBased - Voter: org.springframework.security.web.access.expression.WebExpressionVoter@29802df4, returned: -1
o.s.s.w.a.ExceptionTranslationFilter - Access is denied (user is anonymous); redirecting to authentication entry point
org.springframework.security.access.AccessDeniedException: Access is denied
非常感谢您的帮助!
【问题讨论】:
标签: spring-mvc spring-security spring-security-oauth2