- SpringBoot实例:医院统一信息平台(资源服务oauth2
- SpringBoot实例:医院统一信息平台(服务间通讯)
- SpringBoot实例:医院统一信息平台(JdbcTokenS
- SpringBoot实例:医院统一信息平台(oauth2客户端)
- SpringBoot实例:医院统一信息平台(构建项目)
- SpringBoot实例:医院统一信息平台(组织类型)
- SpringBoot实例:医院统一信息平台(api gatewa
- SpringBoot实例:医院统一信息平台(spring ses
- SpringBoot实例:医院统一信息平台(spring clo
- SpringBoot实例:医院统一信息平台(单点登录测试)
如果资源服务是独立的服务时,需要指向认证服务,前面已经完成的用户服务就存在了认证服务。作为同一系统的一个服务,它不必作为SSO单点登录的客户端,只需要指定由谁认证。这样更合理些。
SpringBoot2与SpringBoot1包含的组件有点区别。
在SpringBoot1是,包含组件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
</dependency>
在SpringBoot2时,spring-security-oauth2就没有在spring boot中了。需要加版本号,还需要用到spring security自己的自动配置。需要如下包含
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth.boot</groupId>
<artifactId>spring-security-oauth2-autoconfigure</artifactId>
</dependency>
在项目中加入@EnableResourceServer注解,表示这个项目是资源服务。
在服务的配置文件中,如下配置:
security:
oauth2:
resource:
userInfoUri: http://192.168.2.105:8180/account/info
这样服务的认证都会指向用户服务的认证结果,其中/account/info的代码如下:
@RequestMapping(value = "/account/info")
@ResponseBody
public ResponseEntity<?> info(Principal principal) {
return new ResponseEntity<>(principal, HttpStatus.OK);
}
这个服务只做资源,认证统一在用户服务中。
调整到负载均衡
前面已经把整个系统调整为spring cloud云服务。用户服务已经注册到服务发现中。名称为huip-user-server。

如果想要在配置文件中,认证服务指向huip-user-server。如果只是做如下修改是得不到结果的
security:
oauth2:
resource:
userInfoUri: http://huip-user-server/account/info
这样配置后,会报错

需要先把.pom文件中加入以下组件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>
配置文件得增加loadBalanced: true。如下
security:
oauth2:
resource:
loadBalanced: true
userInfoUri: http://huip-user-server/account/info
使用了spring-cloud-starter-oauth2之后,就不需要如下的组件了
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth.boot</groupId>
<artifactId>spring-security-oauth2-autoconfigure</artifactId>
</dependency>
网友评论