在Spring Security授权服务器上进行身份验证

时间:2019-01-31 04:59:42

标签: java spring-security spring-security-oauth2

我正在尝试使用spring security构建授权服务器,该服务器主要用于保护SPA的安全,但还需要通过rest API支持移动应用程序的身份验证和授权。

为此,我正在尝试使用oauth2隐式授予来保护SPA(以后计划将其更改为具有PKCE的授权代码授予)。我需要身份验证才能作为休息请求,而不是像

中那样提交表单

POST {用户名:测试,密码:测试}

我通过扩展AbstractAuthenticationProcessingFilter实现了自定义身份验证过滤器,我使用下面的代码块将身份验证对象设置为安全上下文

    public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response)
            throws AuthenticationException {
        try {
            UserCredentials creds = new ObjectMapper().readValue(request.getInputStream(), UserCredentials.class);
            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(
                    creds.getUsername(), creds.getPassword(), Collections.emptyList());
            Authentication authentication = super.getAuthenticationManager().authenticate(authenticationToken);
            SecurityContextHolder.getContext().setAuthentication(authentication);
            return authentication;
        } catch (JsonParseException e) {
            throw new BadAuthenticationRequestException("Error while parsing request", e);
        } catch (JsonMappingException e) {
            throw new BadAuthenticationRequestException("Error while mapping request", e);
        } catch (IOException e) {
            throw new BadAuthenticationRequestException("Error while reading request", e);
        }

    }

当我遇到邮递员的请求时(我正在与邮递员一起测试整个流程)

POST {用户名:测试,密码:测试}

在第二个请求中,当我尝试查看通过身份验证的主体时,身份验证对象似乎不在安全上下文中。

是否有人通过以JSON格式发送请求,然后通过JWT令牌进行oauth2授权来实现自定义身份验证?有任何指针或示例配置可以实现这一目标?谢谢

0 个答案:

没有答案