Я работаю над созданием сервера идентификации для управления удостоверениями для двух разных проектов API.
Я использовал IdentityServer4 и Asp. net Core 3.0 для реализации API и сервера идентификации.
Первый проект - это проверка подлинности сервера на сервер, поэтому я определил клиента с типом гранта GrantType.ResourceOwnerPassword
и настроил API для использования моего сервера идентификации в качестве органа, и он работал нормально.
Но я борюсь со вторым проектом, ожидаемый поток должен быть следующим:
- Запрос пользователя на разрешение через клиентскую платформу.
- Клиент отправит запрос авторизации в соответствии со спецификацией OAuth 2, 4.2.1
- В случае успешной авторизации сервер идентификации должен перенаправить пользовательский агент (браузер) на 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, но он выдает ошибку ниже.