我想创建一个RESTful API,我需要它是无状态的,因为我可能会启动N次应用程序。
我还添加了带有jdbc实现的OAuth2,用户应该登录一次,所有查询都应该是无状态的。
在我的春季启动应用程序中添加以下内容会导致它现在尝试进行两次身份验证的登录崩溃。
http
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
在服务器端,我有这些日志:
AuditEvent [timestamp=Tue Oct 04 05:04:52 ICT 2016, principal=dka, type=AUTHENTICATION_SUCCESS, data={details=org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null}]
AuditEvent [timestamp=Tue Oct 04 05:04:52 ICT 2016, principal=anonymousUser, type=AUTHORIZATION_FAILURE, data={details=org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null, type=org.springframework.security.access.AccessDeniedException, message=Access is denied}]
答案 0 :(得分:0)
看起来您的第二个请求不包含任何授权标头,或者Spring安全性未对其进行评估。
根据OAuth Bearer Type Documentation,您的客户需要提交标头:Authorization: Bearer YOUR_TOKEN
,而令牌是您的访问令牌响应之一(请参阅Example Access Token Response)
如果这不能解决您的问题,请考虑添加一些日志&您的配置代码。