使用Auth0的Springboot身份验证不会进行身份验证

时间:2018-08-31 10:28:23

标签: java spring-boot spring-security auth0 auth0-lock

我正在使用Auth0进行我的身份验证服务。我有一个与Springboot API通信的Web应用程序。我正在尝试使用Auth0 jwt令牌来验证对我的API资源的访问。下面是我的实现。

我的Auth0 JS Web应用程序

var options = {
    allowAutocomplete: true,
    autoclose: true,
    container: 'login-auth',
    theme: {
        logo: 'http://palermoinn.com/wp-content/uploads/2015/12/pullman_palermoinn.png',
        primaryColor: '#009688',
        foregroundColor: "#009688",
        labeledSubmitButton: false,
    },
    auth: {
        audience: 'https://xxx.auth0.com/userinfo',
        responseType: 'token id_token',
        params: {
            state: 'into',
            scope: 'openid email profile roles'
        }
    },
    redirectUri: window.location.href,
    languageDictionary: {
        title: "Log In"
    }
};

// console.log(constants.CLIENT_ID + " or " + constants.VERIFY_URL + " or " + constants.TYPE_GET);

var lock = new Auth0Lock(
    'CLIENT_ID',
    'xxx.auth0.com',
    options
);

if (token == null && profile == null) {
        lock.show();
    } else {
        var HEADER = {
            token: token,
            timeStamp: new Date().getTime(),
            access: profile
        }
        console.log(JSON.stringify(HEADER));
        /**
            * This request would first request a token from the Auth0 Server
            * The token is returned and that token is used to access API resource 
            */
        network.call(constants.STATS_URL + '1', constants.TYPE_GET, {}, token);
        // window.location.href = "dashboard.html";
    }

在springboot Web安全配置中,我实现了以下

@Bean
CorsConfigurationSource corsConfigurationSource() {
    CorsConfiguration configuration = new CorsConfiguration();
    configuration.setAllowedOrigins(Arrays.asList("http://localhost"));
    configuration.setAllowedMethods(Arrays.asList("GET", "POST"));
    configuration.setAllowCredentials(true);
    configuration.addAllowedHeader("Authorization");
    configuration.addAllowedHeader("cache-control");
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", configuration);
    return source;
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.cors();
    JwtWebSecurityConfigurer
            .forRS256(AUTH_AUD, AUTH_ISSUER)
            .configure(http)
            .authorizeRequests()
            .antMatchers(HttpMethod.GET, "/v1/clients/stats/{userId}").authenticated();
}

现在我的问题是我设计的Springboot Web配置不会使用我在标头中传递的令牌来验证我的请求。它不断给我401未经授权的回复。我在做什么错了?

0 个答案:

没有答案