之前因为没学过Spring Security和OAuth2.0,所以看这一章的视频的时候看的一头雾水。所以花了几天时间恶补了一下这方面的知识,并且写了两篇文章,把这两部分内容详细说明了一下。
下面的内容只是针对于这个项目的,前两篇文章中说过的内容就不再说了。
认证服务介绍
怎么搭建OAuth2.0我之前的文章已经详细说过了,这里直接将资料里提供的代码导入即可。
这里简单总结一下每个文件的作用:
-
AuthorizationServerConfig
这个是OAuth2.0的认证服务配置。主要有三点,第一是客户端信息配置,也就是客户端需要有哪些条件才可以访问服务器,比如客户端id和客户端密钥等,可以直接配置到内存中,也可以配置从数据库中读取;第二是授权服务器端点配置,就是配置认证管理器,令牌存储方式等;第三个是授权服务器的安全配置,就是配置访问的限制,比如限制校验令牌的配置等。
-
CustomUserAuthenticationConverter
自定义的UserAuthenticationConverter,继承自DefaultUserAuthenticationConverter,重写了convertUserAuthentication方法。默认该方法是获取authentication中的username和权限信息。而我们重写的方法里面还获取了authentication中的principal,判断是不是我们自定义的UserJwt,不是的话就调用userDetailsService.loadUserByUsername去获取,然后将userJwt中的name和id获取出来,添加到返回的map中。
-
UserDetailsServiceImpl
这个是自定义的认证授权类,实现了UserDetailsService接口,并实现了里面的loadUserByUsername()方法。这个方法是根据前端传进来的用户名去查出对应的用户信息。然后交给后续的过滤器去进行用户身份的验证。一般这个方法是从数据库中查找用户,但是这里为了测试就直接new了一个临时用户,密码是 "robod666" ,所以只要前端传过来的密码是 “robod666” 就可以正常登录。
-
WebSecurityConfig
这个是Spring Security的安全配置类。主要配置了某些对于某些请求的限制。在这个类中,还往Spring容器中注入了passwordEncoder和authenticationManagerBean供其他类使用。
-
UserLoginController
这个是自定义的一个只使用用户名和密码进行登录的简化的登录方式。
-
LoginService
和LoginServiceImpl
Us