0


Swagger3中配置全局token参数

配置代码

@Configuration// @Profile()publicclassSwaggerConfig{@BeanpublicOpenAPIspringShopOpenAPI(){returnnewOpenAPI().components(components())// 2. 再在这里添加上Swagger要使用的安全策略// addList()中写上对应的key.addSecurityItem(newSecurityRequirement().addList("tokenScheme"));}// 1. 先在组件中注册安全策略privateComponentscomponents(){returnnewComponents()// 第一个参数是key值,后面是初始化一个安全策略的参数.addSecuritySchemes("tokenScheme",newSecurityScheme().type(SecurityScheme.Type.APIKEY).in(SecurityScheme.In.HEADER).name("token"));}}

打开Swagger页面,效果如下:

右边多了一把锁的标志,点击就可以输出token值。

点击Authorize之后,发送的请求都会自动在请求头中加上字段为token,值为输入值。

参考连接:springdoc-openapi-ui添加一个JWT请求头参数以生成swagger

安全策略类型 SecurityScheme.Type

注意到初始化安全策略时Type可以选择多种:

上例使用的就是apiKey类型,指定apiKey的位置,就可以在每次发送请求时自动赋上该apiKey。

如上图,除此之外,类型还有http等等类型,其他类型由于笔者暂时还没有接触过,不做说明,但是这个http安全策略是什么呢?接下来一起来了解一下。

http安全策略

在http协议中,也定义了安全认证方式,只不过可能由于实践中使用很少,因此很少听过。

WWW-Authenticate字段

我们可以在响应中返回401

Unauthorized 

状态码,并返回WWW-Authenticate字段,以告诉客户端该接口需要权限认证才能访问,并且在WWW-Authenticate字段中指明相关信息,比如使用身份认证方案。

具体可以参考MDN文档:WWW-Authenticate。

常见的身份认证方案有BasicBearer等等,这里不做具体说明。

Authorization

相应的我们在请求中也有** Authorization**字段用以返回用户凭证。语法是:

Authorization: <auth-scheme> <authorization-parameters>

第一个参数指定使用的身份认证方案,第二个参数指定认证参数。

具体可以参考MDN文档:Authorization。

在Swagger中实践

综上如果我们要使用http安全策略可以在Swagger中如下配置:

privateComponentscomponents(){returnnewComponents().addSecuritySchemes("tokenScheme",newSecurityScheme().type(SecurityScheme.Type.APIKEY).in(SecurityScheme.In.HEADER).name("token"))// type指定为http scheme中指定为bearer.addSecuritySchemes("httpTest",newSecurityScheme().type(SecurityScheme.Type.HTTP).scheme("bearer"));}

Swagger页面如下:

需要注意的是由于这里是http安全策略,它只会在请求头中带上Authorization字段。如果说我们的token认证是直接读取请求头中的自定义字段token的话,这样设置是无效的。

标签: java 前端 spring

本文转载自: https://blog.csdn.net/weixin_55658418/article/details/130042574
版权归原作者 Ninja88! 所有, 如有侵权,请联系我们删除。

“Swagger3中配置全局token参数”的评论:

还没有评论