Не удается получить токен доступа OAuth2 из браузера (SPA) - PullRequest
0 голосов
/ 19 июня 2019

Я работаю над клиентом JS, чтобы продемонстрировать рабочий процесс OAuth для одностраничного приложения (SPA).Я использую WSO2 в качестве сервера авторизации.

Клиент (браузер) может получить код авторизации после того, как пользователь прошел страницу входа и согласия.Но когда он пытается запросить токен с приведенным ниже кодом ajax, он зависает.

Мой ajax (main.html):

// process the auth code
function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}


if (getParameterByName('code')) {

    var auth_code = getParameterByName('code');
    var token_endpoint = "https://authserver:9443/oauth2/token";
    var callback_uri = "http://spa/main.html#callback";

    $.ajax({
        url: token_endpoint,
        headers: {
            "Authorization":"Basic MWhWRmhRMDdUU1dnS3RNWHlDbjhLeVNNY1BzYTp0UnVaVHlkU01lM3oyeVRpZFNob29XSFo2c2th",
            "Content-Type":"application/x-www-form-urlencoded"
        },
        method: "POST",
        dataType: "text",
        data: 
        {
            grant_type: "authorization_code",
            code: auth_code,
            redirect_uri: callback_uri
        },
        success: function(data){
          console.log("success: "+data);
          alert("ajax success");
        },
        error: function(jqXHR, textStatus, errorThrown) { 
            alert("ajax error!");
            alert(jqXHR.responseText);
        }   
      });
}

Запрошенные предупреждения: 1) ошибка ajax!2) undefined

Я проверил информацию об инструменте разработчика Chrome, как показано ниже:

General

Request URL: https://authserver:9443/oauth2/token
Request Method: OPTIONS
Status Code: 200 OK
Remote Address: 10.27.134.142:9443
Referrer Policy: no-referrer-when-downgrade

Заголовки ответа

Allow: POST,OPTIONS
Content-Length: 0
Date: Wed, 19 Jun 2019 03:51:54 GMT
Server: WSO2 Carbon Server
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block

Заголовки запроса

Access-Control-Request-Headers: authorization
Access-Control-Request-Method: POST
Origin: http://spa
Referer: http://spa/main.html

Сначала я сомневаюсь, что что-то не так с CORS.Я проверил WSO2 сервер уже включен CORS глобально.Может ли кто-нибудь указать мне, что идет не так?Большое спасибо!

...