.NET Core 3.1搭建Identity Server调用connect/token报unsupported grant_type错误
错误截图


错误触发原因
- 授权类型配置值不规范:Identity Server 4 内置可识别的标准授权类型对应值为:密码流
password、授权码流authorization_code、刷新令牌流refresh_token,你当前配置中的code不属于合法的内置授权类型值,无法被服务识别。 - 刷新令牌授权类型缺失:你已开启
AllowOfflineAccess支持刷新令牌,但未在AllowedGrantTypes中显式添加refresh_token,若请求时使用grant_type=refresh_token会直接触发该错误。 - 请求格式不符合要求:
connect/token接口仅支持POST请求,且要求Content-Type为application/x-www-form-urlencoded,若请求传JSON格式参数、grant_type参数拼写错误或值与客户端配置的允许值不匹配,都会返回该错误。
解决方法
1. 修正客户端授权类型配置
根据实际使用的授权模式调整appsettings.json的AllowedGrantTypes节点,示例如下:
// 同时支持密码流、授权码流、刷新令牌流的配置 "AllowedGrantTypes": [ "password", "authorization_code", "refresh_token" ],
无需使用的授权类型可直接从数组中移除即可。
2. 校验接口请求参数
发起令牌请求时确认以下规则:
- 请求方式为POST
- 请求头
Content-Type值为application/x-www-form-urlencoded - 表单参数中
grant_type的值与配置的允许值完全匹配:使用密码流传password,授权码流传authorization_code,刷新令牌传refresh_token - 授权码流请求需同步传入正确的
code和redirect_uri参数,且重定向地址与客户端配置完全一致
3. 验证配置加载有效性
可通过调试或日志输出加载后的客户端AllowedGrantTypes属性值,确认配置文件的内容被正确读取到Identity Server的客户端规则中。
内容的提问来源于stack exchange,提问作者SerkanB
相关产品推荐
相关产品推荐

