IdentityServer 4: Неверный тип предоставления для клиента: код авторизации - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь авторизовать мой angular клиент с сервером идентификации. Ниже приведены настройки для моего angular клиента.

  authority: 'http://localhost:5000',
  client_id: 'clientid',
  redirect_uri: 'https://localhost:44384/auth-callback',
  post_logout_redirect_uri: 'https://localhost:44384/',
  response_type: "code",
  scope: "openid profile",
  filterProtocolClaims: true,
  loadUserInfo: true,
  automaticSilentRenew: true,
  silent_redirect_uri: 'http://localhost:44384/silent-refresh.html'

Аналогичный клиент зарегистрирован на стороне IdentityServer.

 new Client
 {
     ClientId = "clientid",     
     AllowedScopes = { "openid", "profile" },
     AllowedGrantTypes = GrantTypes.Code,
     RequirePkce = true,
     RequireClientSecret = false,
     AllowAccessTokensViaBrowser = true,
     AllowOfflineAccess = false,
     AccessTokenLifetime = 3600,
     RedirectUris={"https://localhost:44384/auth-callback" },
     PostLogoutRedirectUris=  {"https://localhost:44384/" },
     RequireConsent= false
  }

, и он работал нормально. но когда я перенес те же настройки клиента в базу данных, это дало мне неверный тип предоставления для клиента .

Ниже приведены журналы VS

[15:15:56 Отладка] IdentityServer4.EntityFramework.Stores.ClientStore clientid найдено в базе данных: True

[15:15:56 Отладка ] IdentityServer4.Stores.ValidatingClientStore успешно выполнена проверка конфигурации клиента для клиентской клиентской базы.

[15:15:56 Debug] IdentityServer4.Validation.AuthorizeRequestValidator Проверка параметров PKCE

[15:15:56 Ошибка ] IdentityServer4.Validation.AuthorizeRequestValidator: Неверный тип предоставления для клиента: код авторизации

Данные базы данных для клиента следующие.

enter image description here

и для grantType.

enter image description here

1 Ответ

0 голосов
/ 23 апреля 2020

Я выяснил проблему. я ошибся GrantType, который я использовал для регистрации на стороне сервера.

 new Client
 {
     -------
     -------
     AllowedGrantTypes = GrantTypes.Code,
     --------
     --------
}

я использовал его GrantType.Code, что в основном является свойством, и оно разрешено до authorization_code.

Таким образом, изменив GrantType в базе данных с Code на authorization_code. исправил мою проблему.

...