JAVA Spring自定义身份验证使用MongoDB获取存储的用户凭据

时间:2017-02-20 09:25:09

标签: spring-boot authorization jwt custom-authentication

您好Stackoverflow团队,

我在REST调用中遇到一个问题,在尝试深入研究HTTP错误之后我一无所知。 不管怎样,授权都不起作用,尽管JWT令牌的生成和获取成功。

我在Springboot应用程序中的简要说明: (可用于分析问题) https://github.com/vivdso/SpringAuthentication

  1. 与名为UserAccounts的后端MongoDb集合对话的DbRepository调用,其中存储了包含密码(Ciphertexts)的角色和凭据详细信息。

  2. JWT令牌生成机制,返回必须附加到后续API调用的HTTP标头的令牌。

  3. 简而言之。

    " .....:8080 / AUTH"方法发布Content-Type appliction / json body:{" username":" user"," password":" sample"}响应应该是一个jwt令牌

    然后

    尝试认证网址.....:8080 /订单。

    ****预期结果:标题"授权:{$ jwtToken从步骤6}实际结果:(错误:403禁止,这应该完全认证,并应让用户访问此API。预期结果:"您好,这是我的订单" ** **

    这只是一个简单的应用程序,没有太多细节需要担心。 任何帮助将不胜感激。

    提前致谢。

2 个答案:

答案 0 :(得分:0)

在您的代码中我无法找到过滤器注册。

尝试将其添加到WebSecurityConfig.java

@Bean
public CustomAuthenticationTokenFilter  authenticationTokenFilterBean() throws Exception {
    CustomAuthenticationTokenFilter  authenticationTokenFilter = new CustomAuthenticationTokenFilter ();
    authenticationTokenFilter.setAuthenticationManager(authenticationManagerBean());
    return authenticationTokenFilter;
}

然后用

注册
http
        .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);

在配置方法

我知道

答案 1 :(得分:0)

这是一个角色不匹配的问题。与jwt中的角色不匹配。 更改了代码以更正角色,并且工作正常 -

public CustomDbRepository(){

    List<String> roles = new ArrayList<>(1);
    //roles.add("ROLE_USER");
    roles.add("USER");