IdentityServer 4: 客户端无效的授权类型:authorization_code。

我试图用身份服务器授权我的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'

类似的客户端在身份服务器端注册。

 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 Debug] IdentityServer4.EntityFramework.S Stores.ClientStoreclientid在数据库中找到。True

[15:15:56 Debug] IdentityServer4.Store.ValidatingClientStoreclient配置验证成功。

[15:15:56 Debug] IdentityServer4.Validation.AuthorizeRequestValidator检查PKCE参数。

[15:15:56 Error] IdentityServer4.Validation.AuthorizeRequestValidator: 客户端无效的授权类型:authorization_code。

客户的数据库数据如下。

enter image description here

以及grantType的数据。

enter image description here

解决方案:

我已经明白了问题所在,我是误解了这个问题。GrantType 我在服务器端注册时使用的代码。当我从内存中获取客户端时,我写了以下代码,即从 appsettings.json 档案

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

后来,我从数据库中获取客户信息,并在那里写了同样的内容 grantTypeCode,wchich是错误的。应该这样定义 authorization_code.

所以通过改变 GrantType 数据库中的 Codeauthorization_code.解决了我的问题。

本文来自投稿,不代表实战宝典立场,如若转载,请注明出处:https://www.shizhanbaodian.com/1172.html

(0)
上一篇 2022年5月29日 下午8:44
下一篇 2022年5月29日 下午8:44

相关推荐

发表评论

登录后才能评论