Аутентификация Springboot с Auth0 не будет проходить аутентификацию - PullRequest
0 голосов
/ 31 августа 2018

Я использую Auth0 для моей службы аутентификации. У меня есть веб-приложение, взаимодействующее с API Springboot. Я пытаюсь аутентифицировать доступ к моему ресурсу API с помощью токена Auth0 jwt. Ниже моя реализация.

Веб-приложение My Auth0 JS

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 я реализовал следующее

@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, которую я разработал, не авторизует мой запрос с токеном, который я передал в заголовке. Это продолжает давать мне 401 несанкционированный ответ. Что я делаю не так?

...