Swagger整合Oauth2

简介: 项目用了Swagger在线接口文档组件,那么如何结合Oauth2.0,让调用接口的时候自动带上认证参数呢?

如果项目中使用了Oauth2.0,那么在每次请求接口的时候都需要在header上带上Authorization参数才可以正常访问,如下所示:


1.png


项目用了Swagger在线接口文档组件,那么如何结合Oauth2.0,让调用接口的时候自动带上认证参数呢?


以下就是Oauth2.0整合Swagger的步骤:


关键代码


@Configuration@EnableSwagger2publicclassSwaggerConfig {
privatestaticfinalStringVERSION="1.0.0";
/*** 创建API*/@BeanpublicDocketcreateRestApi(){
returnnewDocket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
//指定接口包所在路径                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                .paths(PathSelectors.any())
                .build()
//整合oauth2                .securitySchemes(Collections.singletonList(apiKey()))
                .securityContexts(Collections.singletonList(securityContext()));
    }
/*** 添加摘要信息*/privateApiInfoapiInfo() {
returnnewApiInfoBuilder()
                .contact(newContact("JAVA日知录","http://javadaily.cn","jianzh5@163.com"))
                .title("account-server接口文档")
                .description("account-server接口文档")
                .termsOfServiceUrl("http://javadaily.cn")
                .version(VERSION)
                .build();
    }
privateApiKeyapiKey() {
returnnewApiKey("Bearer", "Authorization", "header");
    }
/*** swagger2 认证的安全上下文*/privateSecurityContextsecurityContext() {
returnSecurityContext.builder()
                .securityReferences(defaultAuth())
                .forPaths(PathSelectors.any())
                .build();
    }
privateList<SecurityReference>defaultAuth() {
AuthorizationScopeauthorizationScope=newAuthorizationScope("web", "access_token");
AuthorizationScope[] authorizationScopes=newAuthorizationScope[1];
authorizationScopes[0] =authorizationScope;
returnCollections.singletonList(newSecurityReference("Bearer",authorizationScopes));
    }
}


使用步骤


  • 使用postman调用认证中心接口获取access_token
    http://localhost:8090/auth-service/oauth/token


{
"access_token": "36034ff7-7eea-4935-a3b7-5787d7a65827",
"token_type": "bearer",
"refresh_token": "4baea735-3c0d-4dfd-b826-91c6772a0962",
"expires_in": 36931,
"scope": "web"}


  • 访问Swagger接口页面,点击Authorize接口进行认证,在弹出框中输入Bearer 36034ff7-7eea-4935-a3b7-5787d7a65827并点击认证按钮。


2.png


  • 在Swagger中正常请求接口

3.png


经过以上几步可以看到接口请求会默认带上认证参数,小伙伴们又可以愉快的玩耍了!

目录
相关文章
|
前端开发 Java 程序员
如何在swagger2中配置header请求头等参数信息?(若不会,我便手把手教你)
如何在swagger2中配置header请求头等参数信息?(若不会,我便手把手教你)
3445 1
|
SQL 运维 数据库
12-TDengine数据迁移:导入与导出
12-TDengine数据迁移:导入与导出
3024 0
12-TDengine数据迁移:导入与导出
|
SQL 缓存 运维
MongoDB的性能问题之MongoDB 磁盘IO高问题
MongoDB的性能问题之MongoDB 磁盘IO高问题
|
人工智能 自然语言处理
X Detector:最值得信赖的多语言 AI 内容检测器
**X Detector** 提供直观界面和高效AI文本检测。支持20种语言,无需登录即可免费使用。高准确率、快速响应,几秒内显示结果。适合多语言内容筛查。尝试[AI Detector](https://xdetector.ai/),轻松检测AI生成文本。
X Detector:最值得信赖的多语言 AI 内容检测器
|
存储 监控 Linux
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的设备故障报修管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的设备故障报修管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
147 0
|
存储 边缘计算 Kubernetes
大规模 IoT 边缘容器集群管理的几种架构 -6- 个人体验及推荐
大规模 IoT 边缘容器集群管理的几种架构 -6- 个人体验及推荐
|
弹性计算 运维 Kubernetes
OAM 深入解读(一):OAM 为云原生应用带来哪些价值?
# 背景 OAM 是阿里巴巴联合微软在社区推出的一款用于构建和交付云原生应用的标准规范,之前我们已经发布过一系列介绍文章,为方便大家查阅,链接和介绍如下: * [《Open Application Model (OAM) 实践指南》](https://www.atatech.org/articles/155780):具体而详实的介绍了OAM方方面面的细节。 * [《给 K8s API
Hologres的`dynamicPartition`参数是用来实现动态分区的
Hologres的`dynamicPartition`参数是用来实现动态分区的
241 0
|
小程序 前端开发 JavaScript
从零开始:小程序开发环境搭建详解
本文主要介绍了如何搭建小程序开发环境,并介绍了小程序开发的基本概念和开发流程。首先,文章介绍了小程序开发的基本要求和开发工具的安装方法,包括微信开发者工具和编辑器等。然后,文章通过实例介绍了小程序的基本结构和页面开发流程,并介绍了如何通过模板和组件开发加快开发速度。最后,文章介绍了如何通过调试和发布小程序来完成开发流程,同时给出了一些常见问题的解决方法。本文适合初学者了解小程序开发的基础知识和开发流程,帮助读者更快速地上手小程序开发。
893 0
从零开始:小程序开发环境搭建详解