【问题标题】:Swashbuckle Swagger UI OAuth2 GET token request unsupported_grant_typeSwashbuckle Swagger UI OAuth2 GET 令牌请求 unsupported_grant_type
【发布时间】:2018-09-08 21:06:14
【问题描述】:

问题

  • 我将Swashbuckle 5.6.0 用于带有 OAuth2 令牌身份验证的 ASP.NET Web Api 2。当我尝试使用 SwaggerUI 中的红色感叹号按钮授权装饰有 [Authorize] 的控制器操作时,我收到错误

    unsupported_grant_type

  • 另一个问题似乎是SwaggerUI 发出GET 请求以获取令牌。在Postman 中,如果我使用所需的Content-Type 向令牌端点发送POST 请求,我会得到一个有效的令牌响应。如果我改为在 Postman 中发送 GET 请求,它也不起作用,我会得到

    unsupported_grant_type

研究至今

  • 谷歌搜索此错误似乎表明对令牌端点的请求需要Content-Type "application/x-www-form-urlencoded"。但是,我找不到任何方法在 Swashbuckle 中为令牌请求设置此 Content-Type(我可以使用 IOperationFilters 为控制器操作成功设置标头)。

问题

那么,有什么方法可以通过 Swashbuckle 配置 SwaggerUI 以在定位 OAuth2 令牌端点时使用带有特定 Content-Type 标头的 POST?

【问题讨论】:

    标签: asp.net-web-api oauth-2.0 swagger swagger-ui swashbuckle


    【解决方案1】:

    这取决于您是否有 1) 真正的 oAuth/OpenID 实现或 2)“只是”令牌端点和控制器上的 [Authorize] 属性。

    如果您有 #2,则SO answer is here 会提示您从您选择的令牌端点输入用户名和密码,并从 apikey 字段(如果需要)设置 client_id,this SO answer 允许您粘贴'apikey' 字段中的不记名令牌。

    如果你有 #1,那么你必须确保你知道你的 'auth' 和 'token' 端点并根据swashbuckle oauth2 documentation 标记它们

    【讨论】: