Как я могу преобразовать этот запрос авторизации ajax в стратегию Passport? - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь преобразовать вызов ajax api в повторно используемую стратегию Passport.

var result = {};
var application = "SuperWidget";
var vendor = "WidgetsInc.com";
var businessunit = "1234567890";
var user = "user@example.com";
var pass = "test123";
var authCode = window.btoa(application + "@" + vendor + ":" + businessunit);
$.ajax({
    "url": 'https://api.application.com/AuthorizationServer/Token',
    "type": 'post',
    "contentType": 'application/json',
    "dataType": 'json',
    "headers": {
        'Authorization': 'basic ' + authCode
    },
    "data": JSON.stringify({
    "grant_type": 'password',
    "username": user,
    "password" : pass,
    "scope": 'AdminApi AgentApi AuthenticationApi PatronApi RealTimeApi'
    }),
    "success": function (resp) {
        result.access_token = resp.access_token;
        result.token_type = resp.token_type;
        result.resource_server_base_uri = resp.resource_server_base_uri;
        result.expires_in = resp.expires_in;
        result.refresh_token = resp.refresh_token;
        result.scope = resp.scope;
        result.refresh_token_server_uri = resp.refresh_token_server_uri;
    },
    "error": function (XMLHttpRequest, textStatus, errorThrown) {
        alert("Failed to retrieve token.\n" + XMLHttpRequest.status + ' ' 
            + XMLHttpRequest.statusText);
    }
});

Ответ выглядит так:

{ 
    access_token: "h9l2tWy5ZIApljMFpvJqitJyU2n8SNe1Q5hP85IeMZpwt+ULZt9plv5vKea4eRce57w++yOe2f/j
    AHOMYs81a2RuJdFBRXV/eyUGcyWp79R+OX+MwN/SJYoQBV6ZrGshyyciZkk1/Q4wGEZLw0de9JxGPajm1O9V7
    7GVjRBozESy11+v0Fgp918kxiC0/sCD4bjino6Lkvu2fnHf30sW1zF8LDI7OHqdKaVcMzguMcINtxu55FlKuC
    +UQnesuE2d6LRg4ZxQp3q9jdxETHwvTYkskQLLT+/wmpEW36yryqIlpGzuBv5LmUr83nOb+1zZas34bhJqBxg
    UKztT9GdV5alsT0MQmoNV6Hn5PviO7X47JTey2EvspVkrPnLABUANJ9GfMJKtyUiICXJwk47FmQ==" 
    token_type: "bearer" 
    expires_in: 3600 
    refresh_token: "PX3SnlieM0a22Ij2hGfIxg==" 
    refresh_token_server_uri: 
        "https://api-{cluster}.application.com/AuthorizationServer/Token" 
    resource_server_base_uri: "https://api-{cluster}.application.com/API/" 
    scope: "RealTimeApi AdminApi AuthenticationApi PatronApi AgentApi CustomApi" 
    agent_id: 645328 
    team_id: 103748 
}

Существует ли существующая стратегия, которая отвечает этому потоку? Oauth выглядит в правильном направлении, но пользователь идентифицируется через этот URL-адрес авторизации.

...