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


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

目录
相关文章
|
9月前
|
存储 安全 Java
OAuth2.0
OAuth2.0
192 0
|
1月前
|
存储 安全 Java
|
3月前
|
JSON 前端开发 Java
Swagger介绍及使用
Swagger介绍及使用
50 2
|
10月前
|
JSON 前端开发 JavaScript
认识并了解Swagger
认识并了解Swagger
69 0
|
5月前
|
存储 API Go
Hertz 整合swagger
Hertz 整合swagger
52 0
|
10月前
|
存储 JavaScript 前端开发
带你全面了解 OAuth2.0
最开始接触 OAuth2.0 的时候,经常将它和 SSO单点登录搞混。后来因为工作需要,在项目中实现了一套SSO,通过对SSO的逐渐了解,也把它和OAuth2.0区分开了。所以当时自己也整理了一篇文章《SSO单点登录原理及实现方式》 最近需要经常和各大电商平台进行对接,所以又和OAuth2.0重逢了。因此这里再次对OAuth2.0的原理及实现方式进行一个梳理,希望通过这套教程能够帮到大家。对于技术类的文章,这引言是有点过长了。好了下面我们进入正题。
371 0
|
11月前
Swagger整合Oauth2
Swagger整合Oauth2
100 0
|
11月前
|
安全 JavaScript 前端开发
详解OAuth2.0
1.概述 OAUTH,Open Authorization,开放授权协议,为用户资源的授权提供了一个安全的、开放而又简易的标准。目的是让第三方对用户的数据只有有限访问权,而无法触及到用户的核心信息。 例如,在第三方网站上使用微信或者QQ作为账号进行登录,就是使用的oauth协议,只返回给第三方诸如用户名、头像等信息,而不会返回给第三方秘密等核心数据。 OAuth最初由Twitter的开发人员提出,后来成为了一个互联网标准,并得到了广泛应用。OAuth2.0是OAuth协议的第二个版本,是一种更加安全、可扩展、功能更加完备的授权协议。目前我们说OAuth一般指的就是OAuth 2.0。
1216 1
|
安全 Java Spring
Spring Security Oauth2 整合单点登录简易demo
Spring Security Oauth2 整合单点登录简易demo
Spring Security Oauth2 整合单点登录简易demo
|
存储 JSON 安全
SpringBoot整合OAuth2
SpringBoot整合OAuth2
1665 0
SpringBoot整合OAuth2