案例之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();

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

相关文章
|
5月前
|
存储 Java Maven
使用Java实现OAuth 2.0认证授权
使用Java实现OAuth 2.0认证授权
|
3月前
|
安全 Java 数据安全/隐私保护
|
存储 安全 前端开发
深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
这篇文章讨论了认证和授权的概念,并探讨了设计权限认证框架的原则。它还比较了Cookie和Session的区别,并探讨了处理分布式部署时的Session保存问题。此外,文章还介绍了CSRF攻击及其防范方法,以及OAuth2.0、JWT令牌和SSO的概念。最后,文章提出了设计开放授权平台时需要考虑的因素。
230 0
深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
|
移动开发 小程序 安全
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(二)
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(二)
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(二)
|
安全 Cloud Native Java
Spring与OAuth2:实现第三方认证和授权的最佳实践
Spring与OAuth2:实现第三方认证和授权的最佳实践
219 0
|
安全 前端开发 小程序
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(一)
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(一)
|
存储 缓存 安全
SpringSecurity基础-认证和授权概述
RBAC是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。
102 0
|
存储 缓存 安全
一.SpringSecurity基础-认证和授权概述
SpringSecurity基础-认证和授权概述
|
安全 Java 数据安全/隐私保护
OAuth2.0实战!玩转认证、资源服务异常自定义这些骚操作!
OAuth2.0实战!玩转认证、资源服务异常自定义这些骚操作!
|
安全 Java 数据安全/隐私保护
案例之认证服务security配置|学习笔记
快速学习案例之认证服务security配置
案例之认证服务security配置|学习笔记