Реализация неявного потока OAuth с использованием Asp. net core 3.0 - PullRequest
0 голосов
/ 19 июня 2020

Я работаю над созданием сервера идентификации для управления удостоверениями для двух разных проектов API.

Я использовал IdentityServer4 и Asp. net Core 3.0 для реализации API и сервера идентификации.

Первый проект - это проверка подлинности сервера на сервер, поэтому я определил клиента с типом гранта GrantType.ResourceOwnerPassword и настроил API для использования моего сервера идентификации в качестве органа, и он работал нормально.

Но я борюсь со вторым проектом, ожидаемый поток должен быть следующим:

  1. Запрос пользователя на разрешение через клиентскую платформу.
  2. Клиент отправит запрос авторизации в соответствии со спецификацией OAuth 2, 4.2.1
  3. В случае успешной авторизации сервер идентификации должен перенаправить пользовательский агент (браузер) на redirect_uri с токеном доступа , добавленным как фрагмент , согласно https://tools.ietf.org/html/rfc6749#section -4.2.2 . Параметр состояния следует передавать без изменений.

Я настроил второй клиент, как показано ниже:

   new Client
   {
       ClientId = "TV",
       ClientSecrets = new [] { new Secret("xxxx".Sha256()) },
       AllowedGrantTypes = new [] { GrantType.Implicit },
       AllowAccessTokensViaBrowser = true,
       RedirectUris = { "https://localhost:44365/signin-oidc" },
       RequireClientSecret = false,
       PostLogoutRedirectUris = { "https://localhost:44365/signout-callback-oidc" },
       AllowedScopes = { "general" },
    }

Обратите внимание, что общая область действия определена в ApiResource

I попытался протестировать создание токена, отправив запрос получения от PostMan на http://identityserverURL/connect/authorize, содержащий client_id, redirect_uri, grant_type = token, состояние в теле запроса - x- www-form-urlencoded, но он выдает ошибку ниже.

enter image description here

...