确认oauth2审批流后,java Princial在service/oauth/authorize(approveOrDeny中的http post)中为空
我使用的是spring security oauth2审批页面,当我授权一个请求时,它会作为“post”发送到“/oauth/authorize”(类AuthorizationEndpoint中的approveOrDeny方法),但是该服务的一个参数为null,即“principal”
spring oauth页面,当我点击授权 (https://i.imgur.com/rJvCUo9.jpg)
有人知道为什么这个参数(Principal Principal)为空吗
这是spring方法,其主体为null
public View approveOrDeny(@RequestParam Map<String, String> approvalParameters, Map<String, ?> model,
SessionStatus sessionStatus, Principal principal) {
if (!(principal instanceof Authentication)) {
sessionStatus.setComplete();
throw new InsufficientAuthenticationException(
"User must be authenticated with Spring Security before authorizing an access token.");
}
...
...
# 1 楼答案
我发现了这个问题,我有一个扩展DefaultRedirectResolver的类,在我调用的重写方法resolveRedirect中 SecurityContextHolder。clearContext()
只需移除SecurityContextHolder即可。校长来了