Получение неавторизованной ошибки 401 в запросе типа разрешения аутентификации One Login, часть 2 - PullRequest
0 голосов
/ 18 июня 2020

Я использую структуру MVC, чтобы сделать POST-запрос к OneLogin API для получения JWT. Я получаю несанкционированное сообщение 401 на свой вызов PostAsyn c в приведенном ниже коде.

Ошибка выглядит следующим образом:

StatusCode: 401, ReasonPhrase: 'Unauthorized', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Pragma: no-cache
  Cache-Control: no-store, no-cache
  Date: Wed, 17 Jun 2020 04:21:23 GMT
  Set-Cookie: ol_oidc_canary_30=false; path=/; domain=.onelogin.com
  X-Powered-By: Express
  Content-Length: 77
  Content-Type: application/json; charset=utf-8
}

Мне не хватает каких-либо параметров. Я зарегистрировал свой локальный хост в одной учетной записи разработчика. Есть ли там какие-то настройки, которые мне нужно обновить или изменить?

    public async Task<OidcTokenResponse> ProcessToken(string code, string clientSec)
    {

        string authorityToken = OneLoginAuthorityToken;
        var formData = new System.Net.Http.FormUrlEncodedContent(new[]
       {
            new KeyValuePair<string, string>("code", code),
          new KeyValuePair<string, string>("client_id", OneLoginClientID),
          new KeyValuePair<string, string>("client_secret", clientSec),
          new KeyValuePair<string, string>("grant_type", "authorization_code"),
      });

        using (var client = new System.Net.Http.HttpClient())
        {
            const SslProtocols _Tls12 = (SslProtocols)0x00000C00;
            const System.Net.SecurityProtocolType Tls12 = (System.Net.SecurityProtocolType)_Tls12;
            System.Net.ServicePointManager.SecurityProtocol = Tls12;

            var res = await client.PostAsync(authorityToken, formData);
            var json = await res.Content.ReadAsStringAsync();
            var tokenReponse = Newtonsoft.Json.JsonConvert.DeserializeObject<OidcTokenResponse>(json);
            return tokenReponse;
        }         
    }

1 Ответ

1 голос
/ 19 июня 2020

Вам нужно снова отправить redirect_uri в этом сообщении - это функция безопасности потока кода авторизации.

Также стоит отслеживать сообщения с помощью такого инструмента, как Fiddler, чтобы гарантировать, что сообщения, отправленные через Wire - это то, что вы ожидаете.

См. шаги 4 и 8 моих сообщений, напишите для сравнения.

...