gpt4 book ai didi

java - 如何创建一个接受基本身份验证 header 或 oauth2 访问 token 的端点?

转载 作者:行者123 更新时间:2023-12-02 01:38:49 25 4
gpt4 key购买 nike

我已经使用 Spring Boot Security 设置了 OAuth2 身份验证服务器,一切运行良好。接下来我想做的是创建一个 super 用户,它可以仅使用基本的身份验证 header 向每个端点发送请求,而不会影响其他用户的身份验证流程。 Spring Boot 安全性可以做到这一点吗?

谢谢,克里斯

最佳答案

是的,这是可能的。

一个选项是使用 ROLES,因此您可以使用 @Secured 注释选择访问每个端点的用户。

其他选项包括实现您自己的过滤器以在请求之前运行。这是一个使用 JWT token 过滤和验证的简单示例:

public class JWTConfigurer extends SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> {

@Override
public void configure(HttpSecurity http) {
JWTFilter customFilter = new JWTFilter();
http.addFilterBefore(customFilter, UsernamePasswordAuthenticationFilter.class);
}

}

public class JWTFilter extends GenericFilterBean {

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
// Here go your implementation
String jwt = resolveToken(httpServletRequest);
if (isTokenValid(jwt)) {
Authentication authentication = getAuthenticationFromToken(jwt);
SecurityContextHolder.getContext().setAuthentication(authentication);
}
filterChain.doFilter(servletRequest, servletResponse);
}

private String resolveToken(HttpServletRequest request) {
String bearerToken = request.getHeader("YOUR-AUTHORIZATION-HEADER");
if (StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer ")) {
return bearerToken.substring(7, bearerToken.length());
}
return null;
}


关于java - 如何创建一个接受基本身份验证 header 或 oauth2 访问 token 的端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54768979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com