SpringBoot实例:医院统一信息平台(资源服务oauth2)

如果资源服务是独立的服务时,需要指向认证服务,前面已经完成的用户服务就存在了认证服务。作为同一系统的一个服务,它不必作为SSO单点登录的客户端,只需要指定由谁认证。这样更合理些。
SpringBoot2与SpringBoot1包含的组件有点区别。
在SpringBoot1是,包含组件

        
            org.springframework.boot
            spring-boot-starter-security
        

        
            org.springframework.security.oauth
            spring-security-oauth2
        

在SpringBoot2时,spring-security-oauth2就没有在spring boot中了。需要加版本号,还需要用到spring security自己的自动配置。需要如下包含

        
            org.springframework.boot
            spring-boot-starter-security
        

        
            org.springframework.security.oauth
            spring-security-oauth2
            2.3.3.RELEASE
        

        
            org.springframework.security.oauth.boot
            spring-security-oauth2-autoconfigure
        

在项目中加入@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文件中加入以下组件

        
            org.springframework.cloud
            spring-cloud-starter-oauth2
        

配置文件得增加loadBalanced: true。如下

security:
  oauth2:
    resource:
      loadBalanced: true
      userInfoUri: http://huip-user-server/account/info

使用了spring-cloud-starter-oauth2之后,就不需要如下的组件了

        
            org.springframework.security.oauth
            spring-security-oauth2
            2.3.3.RELEASE
        

        
            org.springframework.security.oauth.boot
            spring-security-oauth2-autoconfigure
        

你可能感兴趣的:(SpringBoot实例:医院统一信息平台(资源服务oauth2))