Java最新Spring Cloud入门-Oauth2授权之基于JWT完成单点登录(Hoxton版本),springmvc基础教程

最后

手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

oauth2-service-url: http://localhost:9401

spring:

application:

name: oauth2-client

security:

与oauth2-server对应的配置

oauth2:

client:

client-id: admin

client-secret: admin123456

user-authorization-uri: ${oauth2-service-url}/oauth/authorize

access-token-uri: ${oauth2-service-url}/oauth/token

resource:

jwt:

key-uri: ${oauth2-service-url}/oauth/token_key

在启动类上添加@EnableOAuth2Sso注解来启用单点登录功能:

@EnableOAuth2Sso

@SpringBootApplication

public class Oauth2ClientApplication {

public static void main(String[] args) {

SpringApplication.run(Oauth2ClientApplication.class, args);

}

}

添加接口用于获取当前登录用户信息:

@RestController

@RequestMapping(“/user”)

public class UserController {

@GetMapping(“/getCurrentUser”)

public Object getCurrentUser(Authentication authentication) {

return authentication;

}

}

修改授权服务器配置


修改oauth2-jwt-server模块中的AuthorizationServerConfig类,将绑定的跳转路径为http://localhost:9501/login,并添加获取秘钥时的身份认证。

@Configuration

@EnableAuthorizationServer

public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

//以上省略一堆代码…

@Override

public void configure(ClientDetailsServiceConfigurer clients) throws Exception {

clients.inMemory()

// 配置client_id

.withClient(“admin”)

// 配置client_secret

.secret(passwordEncoder.encode(“admin123456”))

// 配置访问token的有效期

.accessTokenValiditySeconds(3600)

// 配置刷新token的有效期

.refreshTokenValiditySeconds(864000)

// 配置redirect_uri,用于授权成功后的跳转

// .redirectUris(“http://www.baidu.com”)

// 单点登录时配置

.redirectUris(“http://localhost:9501/login”)

// 自动授权配置

// .autoApprove(true)

// 配置申请的权限范围

.scopes(“all”)

// 配置grant_type,表示授权类型

.authorizedGrantTypes(“authorization_code”, “password”, “refresh_token”);

}

@Override

public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {

// 获取密钥需要身份认证,使用单点登录时必须配置

security.tokenKeyAccess(“isAuthenticated()”);

}

}

网页单点登录演示


启动oauth2-client服务和oauth2-jwt-server服务;

访问客户端需要授权的接口http://localhost:9501/user/getCurrentUser会跳转到授权服务的登录界面;

在这里插入图片描述

进行登录操作后跳转到授权页面;

在这里插入图片描述

授权后会跳转到原来需要权限的接口地址,展示登录用户信息;

在这里插入图片描述

如果需要跳过授权操作进行自动授权可以添加autoApprove(true)配置:

@Configuration

@EnableAuthorizationServer

public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

//以上省略一堆代码…

@Override

public void configure(ClientDetailsServiceConfigurer clients) throws Exception {

clients.inMemory()

// 配置client_id

.withClient(“admin”)

// 配置client_secret

.secret(passwordEncoder.encode(“admin123456”))

// 配置访问token的有效期

.accessTokenValiditySeconds(3600)

// 配置刷新token的有效期

.refreshTokenValiditySeconds(864000)

// 配置redirect_uri,用于授权成功后的跳转

// .redirectUris(“http://www.baidu.com”)

// 单点登录时配置

.redirectUris(“http://localhost:9501/login”)

// 自动授权配置

.autoApprove(true)

// 配置申请的权限范围

.scopes(“all”)

// 配置grant_type,表示授权类型

.authorizedGrantTypes(“authorization_code”, “password”, “refresh_token”);

}

}

调用接口单点登录演示


这里我们使用Postman来演示下如何使用正确的方式调用需要登录的客户端接口。

访问客户端需要登录的接口:http://localhost:9501/user/getCurrentUser

使用Oauth2认证方式获取访问令牌:

在这里插入图片描述

输入获取访问令牌的相关信息,点击请求令牌:

在这里插入图片描述

此时会跳转到授权服务器进行登录操作:

在这里插入图片描述

登录成功后使用获取到的令牌:

在这里插入图片描述

最后请求接口可以获取到如下信息:

{

“authorities”: [{

“authority”: “admin”

}],

“details”: {

“remoteAddress”: “0:0:0:0:0:0:0:1”,

“sessionId”: “6F5A553BB678C7272145FF9FF2A5D8F4”,

“tokenValue”: “eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJqb3Vyd29uIiwic2NvcGUiOlsiYWxsIl0sImV4cCI6MTU3NzY4OTc2NiwiYXV0aG9yaXRpZXMiOlsiYWRtaW4iXSwianRpIjoiZjAwYjVkMGUtNjFkYi00YjBmLTkyNTMtOWQxZDYwOWM4ZWZmIiwiY2xpZW50X2lkIjoiYWRtaW4iLCJlbmhhbmNlIjoiZW5oYW5jZSBpbmZvIn0.zdgFTWJt3DnAsjpQRU6rNA_iM7gVHX7E9bCyF73MOSM”,

“tokenType”: “bearer”,

“decodedDetails”: null

},

“authenticated”: true,

“userAuthentication”: {

“authorities”: [{

“authority”: “admin”

}],

“details”: null,

“authenticated”: true,

“principal”: “jourwon”,

“credentials”: “N/A”,

“name”: “jourwon”

},

“clientOnly”: false,

“oauth2Request”: {

“clientId”: “admin”,

“scope”: [“all”],

“requestParameters”: {

“client_id”: “admin”

},

“resourceIds”: [],

“authorities”: [],

“approved”: true,

“refresh”: false,

“redirectUri”: null,

“responseTypes”: [],

“extensions”: {},

“grantType”: null,

“refreshTokenRequest”: null

},

最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

image

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

[外链图片转存中…(img-ps1lSKTV-1715412671013)]

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 27
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值