最后
手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友
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文档)
除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!
于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)
[外链图片转存中…(img-ps1lSKTV-1715412671013)]
除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!