Swashbuckle Swagger UI OAuth2 GET令牌请求unsupported_grant_type

时间:2018-09-08 21:06:14

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

问题

  • 我正在将Swashbuckle 5.6.0用于具有OAuth2令牌身份验证的ASP.NET Web Api 2。当我尝试使用SwaggerUI中的红色感叹号按钮授权以[Authorize]装饰的Controller动作时,出现错误

      

    unsupported_grant_type

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

      

    unsupported_grant_type

到目前为止研究过的

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

问题

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

1 个答案:

答案 0 :(得分:0)

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

如果您拥有#2,那么SO answer is here会提示您从选择的令牌端点中输入用户名和密码,并从apikey字段中设置client_id(如果需要),并且this SO answer允许您可以在“ apikey”字段中粘贴Bearer令牌。

如果您拥有#1,则必须确保知道“ auth”和“ token”端点,并根据swashbuckle oauth2 documentation

进行标记