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


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

目录
相关文章
|
7月前
|
存储 安全 Java
|
安全 JavaScript 前端开发
详解OAuth2.0
1.概述 OAUTH,Open Authorization,开放授权协议,为用户资源的授权提供了一个安全的、开放而又简易的标准。目的是让第三方对用户的数据只有有限访问权,而无法触及到用户的核心信息。 例如,在第三方网站上使用微信或者QQ作为账号进行登录,就是使用的oauth协议,只返回给第三方诸如用户名、头像等信息,而不会返回给第三方秘密等核心数据。 OAuth最初由Twitter的开发人员提出,后来成为了一个互联网标准,并得到了广泛应用。OAuth2.0是OAuth协议的第二个版本,是一种更加安全、可扩展、功能更加完备的授权协议。目前我们说OAuth一般指的就是OAuth 2.0。
1846 1
Swagger整合Oauth2
Swagger整合Oauth2
157 0
|
存储 JSON NoSQL
16、Spring Security Oauth2 JWT(二)
用户身份认证:用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问。常见的用户身份认证表现形式有:用户名密码登录,指纹打卡等方式。
348 0
16、Spring Security Oauth2 JWT(二)
|
存储 人工智能 安全
16、Spring Security Oauth2 JWT(一)
用户身份认证:用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问。常见的用户身份认证表现形式有:用户名密码登录,指纹打卡等方式。
247 0
16、Spring Security Oauth2 JWT(一)
|
存储 安全 Java
Spring Security Oauth2整合JWT
Spring Security Oauth2整合JWT
Spring Security Oauth2整合JWT
|
安全 Java Spring
Spring Security Oauth2 整合单点登录简易demo
Spring Security Oauth2 整合单点登录简易demo
Spring Security Oauth2 整合单点登录简易demo
|
存储 NoSQL 安全
|
安全 Java Spring
Spring Security OAuth2基于JWT认证授权
OAuth2是一种授权方法,用于通过HTTP协议提供对受保护资源的访问。首先,OAuth2使第三方应用程序能够获得对HTTP服务的有限访问权限,然后通过资源所有者和HTTP服务之间的批准交互来让第三方应用程序代表资源所有者获取访问权限。

热门文章

最新文章