案例之oauth2认证所需资源说明|学习笔记

简介: 快速学习案例之oauth2认证所需资源说明

开发者学堂课程【Spring Security知识精讲与实战演示(四)案例之oauth2认证所需资源说明】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/733/detail/13086


案例之oauth2认证所需资源说明

 

内容介绍:

一、初步配置oauth2服务端文件

二、认证oauth2的步骤

三、配置oauth2认证服务

 

一、初步配置oauth2服务端文件

开始进入一个重要的文件,oauth2服务端文件,如图所示:

image.png

我们先新建一个page类,命名如下:

image.png

类名可以是任意名字,page类对象如果要起作用,要声明其是个page类,再加上一个注解,叫做enableAuthorizationServer,这个注解跟以前写得差不多,需要继承一个类,或者一个接口,一般是选择继承一个类,只需要把原码复制过来,如果打开看不到这个注解,可以看一下左上角有一个原码的选项,就可以点击那个,原码内容如下:

image.png

让其继承这个对象,把上图蓝色背景的复制过来就可以了。

 

二、认证oauth2的步骤

接下来要写的有点多,先把步骤给列出来,然后再一一往里填充,步骤如下:

1.数据库连接池对象

oauth2是跟着所有的一些数据来源,或者是要写数据库的一些信息,那就需要要得到这个oauth对象然后才能去操作这个数据库表,那这个对象肯定也是需要的,所以第一个数据库连接池对象必要的。

2.认证业务对象

这个认证业务对象其实就是这里边刚才已经用过的一个service,如图所示:

image.png

刚才已经写过了为什么还要再写一遍,明确一个事情,当前的这一个认证系统,既可以使用springSecurity,又可以使用oauth2,这是两个平行的技术,互不干扰。

image.png

看上图就表示可以让用户过来进行单点登录,进行我们用户的一个正常的认证,oauth2的功能是什么呢?可以让其他系统拿着token过来访问当前的系统,换句话来说,就是这里的认证在之前的security中已经写过一次,但是在oauth2中要做另外一个token的颁发,所以说在里边需要另外一套跟他是独立运行的,所以说在这里就要认证业务对象,原封不动再登录以下,因为这里如果想要A系统用B系统,用户要登录B系统,否则不可以使用。

3.授权码模式专业对象

这个对象之前有强调过:

image.png

上图可见在这里边放的一个对象就是为了让我们用,要给它移动回来,不移动回来的话就没办法使用这个对象,这个对象就可以拿到这个文件来用。

4.客户端信息来源

这一点要注意客户端指的是上图所示的A系统,如果想要A系统直接去访问B系统,就要让B系统有一个授用权,该如何使用呢?就注册一个客户端,客户端信息一般就保存到数据库表中。

5.token保存策略

需要保存token。 

6.授权信息保存策略

解释:A系统将来要访问B系统,就要给A系统授权,那么B系统给A系统授权,B系统给A系统授了什么样的权限,一定要记录下来,比如oauthd2的产品模块的查询条件,就要记录下来,什么时候得到了这个系统的一个查询条件,将来有根可循,一定要有的一个授权的信息。 

7.授权码模式数据来源

授权码模式为什么那么特殊,有一个专门的数据来源呢?刚才分析流程的时候感觉授权码就特别的复杂,比如后端的一个表,有很多的字段都是跟授权码相关的,比如下图的web_server_redirect_url:

image.png

如果不保留这个地址,那么A系统的服务器就暴露出来了,是不合适的,应该将这个地址存储到服务器中,将来用到的时候要从授权码模式数据来源这个地方来拿,授权码数据来源可以从这里写入。

 

三、配置oauth2认证服务

授权配置,名字如下:

image.png

首先是数据库,是DataSource,接下来是一个认证业务,然后是数据库中查询出客户端信息,token保存策略,授权信息保存策略,授权码模式专用对象,指定客户端登录来源信息,一共有七个对象。

开始配置,对象有了配置就简单了,当前的oauth2认证的每一个对象的功能如上介绍,下面在配的时候就直接填充。

//数据库的名字

@Autowired

private DataSource dataSource;

//认证业务

@Autowired

private AuthenticationManager authenticationManager;

//从数据库中查询出客户端信息

@Autowired

private UserDetailsservice userDetailsservice;

//token保存策略

@Bean

public JdbcClientDetailsService clientDetailsService() {

return new JdbcclientDetailsservice(dataSource);

)

//授权信息保存策略

@Bean

public Tokenstore tokenstore() {

return new JdbcTokenstore(datasource) ;

//授权码模式专用对象

@Bean

public AuthorizationcodeServices authorizationcodeServices() {

return new dbcAuthorizationcodeservices(dataSource);

}

//指定客户端登录信息来源override

public void configure(ClientDetailsServiceConfigurer clients) throws Exception {

clients.withclientDetails(clientDetailsService());

)

@override

public

void

configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {

oauthServer.allowFormAuthenticationForClients();

根据以上代码配置我们就可以配置成功了。

相关文章
|
2月前
|
安全 Java 数据安全/隐私保护
|
4月前
|
存储 JSON 安全
OAuth2与JWT在API安全中的角色:技术深度解析
【7月更文挑战第20天】OAuth2和JWT作为两种重要的安全协议,在API安全中发挥着不可或缺的作用。OAuth2通过提供灵活的授权框架,实现了对资源的细粒度访问控制;而JWT则通过其紧凑性和自包含性,确保了身份验证和信息传输的安全性。在实际应用中,将OAuth2和JWT结合使用,可以构建出既强大又安全的API服务,为用户提供更加安全、可靠和便捷的数字体验。
|
存储 安全 前端开发
深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
这篇文章讨论了认证和授权的概念,并探讨了设计权限认证框架的原则。它还比较了Cookie和Session的区别,并探讨了处理分布式部署时的Session保存问题。此外,文章还介绍了CSRF攻击及其防范方法,以及OAuth2.0、JWT令牌和SSO的概念。最后,文章提出了设计开放授权平台时需要考虑的因素。
204 0
深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
|
安全 Cloud Native Java
Spring与OAuth2:实现第三方认证和授权的最佳实践
Spring与OAuth2:实现第三方认证和授权的最佳实践
201 0
|
存储 缓存 安全
SpringSecurity基础-认证和授权概述
RBAC是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。
96 0
|
存储 缓存 安全
一.SpringSecurity基础-认证和授权概述
SpringSecurity基础-认证和授权概述
|
安全 Java 数据安全/隐私保护
OAuth2.0实战!玩转认证、资源服务异常自定义这些骚操作!
OAuth2.0实战!玩转认证、资源服务异常自定义这些骚操作!
|
存储 安全 Java
OAuth2在项目中使用完成的功能说明|学习笔记
快速学习OAuth2在项目中使用完成的功能说明
OAuth2在项目中使用完成的功能说明|学习笔记
|
JSON 算法 安全
【SpringBoot技术指南】「权限校验专区」Shiro整合JWT授权和认证实现
【SpringBoot技术指南】「权限校验专区」Shiro整合JWT授权和认证实现
320 0
|
安全 前端开发 JavaScript
OAuth2.0实战(二)四种认证方式的基本使用
OAuth2.0实战(二)四种认证方式的基本使用
486 0
OAuth2.0实战(二)四种认证方式的基本使用