spring cloud gateway security oauth2

申请token

客户端认证

GenericFilterBean.java 过滤链
ClientCredentialsTokenEndpointFilter.java
@Override
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response)
throws AuthenticationException, IOException, ServletException {

if (allowOnlyPost && !"POST".equalsIgnoreCase(request.getMethod())) {
throw new HttpRequestMethodNotSupportedException(request.getMethod(), new String[] { "POST" });
}

String clientId = request.getParameter("client_id");
String clientSecret = request.getParameter("client_secret");

// If the request is already authenticated we can assume that this
// filter is not needed
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null && authentication.isAuthenticated()) {
return authentication;
}

if (clientId == null) {
throw new BadCredentialsException("No client credentials presented");
}

if (clientSecret == null) {
clientSecret = "";
}

clientId = clientId.trim();
UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(clientId,
clientSecret);

return this.getAuthenticationManager().authenticate(authRequest);

}

生成token

验证token

WebFilter.java 调用链
AuthenticationWebFilter.java
ReactiveOAuth2ResourceServerJwkConfiguration.java 配置信息
DefaultJWTProcessor.java
 

 

posted @ 2020-12-29 13:18  闻见知行  阅读(718)  评论(0编辑  收藏  举报