开发者学堂课程【Spring Security知识精讲与实战演示(四):OAuth2在项目中使用完成的功能说明】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/733/detail/13078
OAuth2在项目中使用完成的功能说明
OAuth2在这些流程中扮演的角色,大概的流程是什么。要注意这里有a系统, b系统。是在a系统中做操作,还是在b系统中做操作?不管是a系统,b系统,它都有认证操作的功能,那现在微服务这么流行,分布流行,一般可以认为不管是a系统还是b系统,都有一个认证的一个微服务。如下图。
这个是认证,下边是资源,资源有很多,这个是资源维护,是每一个具体的操作,这里就来说一下服务器。这个服务器里有很多认证、资源,现在认证只需要一个,因为认证登录,一次登录所有地方都可以用,很多地方都能用。
接下来要做事情,现在a系统与b系统,要使用b系统,肯定用的是资源,因为它不需要认证,有token就可以直接来访问,不需要认证,认证一般是用户认证,不是给系统认证,所以这里不需要去认证,a系统想访问b系统的资源,只需要拿token就可以,注意,a系统要想直接操作b系统的资源,除了得到用户的认可之外,a系统要能拿到b系统的操作权限。如果a系统本来跟b系统就完全没有关系,该怎么去拿它里面的照片?所以事先a系统必须跟b系统有一个对接,而这个对接就是a系统要调b系统中打印照片,是照片列表的一个接口,拿到这个照片它必须要有一个对接,没有对接用户即便是答应去操作,那也不能操作,而a系统要跟b系统对接时,b系统要存储a系统的信息。
b系统存储a系统的信息,一般情况下,a系统称之为客户端,认为b系统公司是a系统的一个客户,因为它想用东西,但是有可能要交钱,所以它是一个客户,那b系统一定要存储信息,接下来,a系统要去访问b系统里的资源,要通过认证,在认证服务中给a系统颁发token,访问认证系统来得到,换言之,这就是服务端,OAuth2有两个端,一个是服务端,另一个是资源端,以后就成为一个OAuth2的资源端,只要认为b系统从b系统的认证服务中得到了一个OAuth2,注意这个token是颁发的,凡是它下属的资源是有对应关系,对应关系到具体代码的时候才能收到,那只要是它对应的下面的所有的资源,a系统就可以直接来访问,那通过这大家就会清楚两个信息,
第一,使用的地方已经知道,是在b系统中使用,不是在a系统中,就是要用到b系统中。在b系统中,认证微服务中,要把它做成OAuth2的一个认证服务端。那其他服务当然需要让有可能要被其他系统访问到的资源可以作为OAuth2中的一个资源端,每一个资源都会有一个,这是第一个要知道的信息。第二个要知道的信息是b系统要存储a系统的信息,还有用户的信息,用户的信息就是注册了系统就有用户信息,但是用户,一般称之为a系统的客户,就是客户端,注意:b系统要存储a系统的信息,那要存到什么地方?首先spring的OAuth2提供了一种方案,可以往内存中存储,换言之,可以写死的代码中这种方案很显然是不行的,因为大家都知道,比如说微信登录,这个b系统现在就是微信,如果想用微信登录,必须去微信公众号上去申请一个客户端账号才可以,如果不申请这个客户端账号,就无法使用微信进行三方登录。要申请微信就要记录信息,如果信息是在代码中记录,那每次申请那么多公司都用微信登录,那每一次的申请微信都要去修改代码,显然是不可行的。但自己写一个小的案例demo其实是可以的,如果真的是企业级的开发,客户信息一定会存储在数据库。或者是最次也要存储到reads中,所以这里选择使用存储数据库用于企业开发。客户端信息一般都存储在数据库中,当然也可以存储在其他地方,通常都是存储在数据库中。要往数据库存储a系统的信息,就必须要知道该怎么存。因为服务端,资源端都不是自己写的,都是spring帮我们做的,既然是它帮我们做,那表结构自己也无法定义,肯定是它准备好的。