美文网首页
SpringBoot实例:医院统一信息平台(资源服务oauth2

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

作者: 碧波之心 | 来源:发表于2018-11-09 12:25 被阅读798次

如果资源服务是独立的服务时,需要指向认证服务,前面已经完成的用户服务就存在了认证服务。作为同一系统的一个服务,它不必作为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>

相关文章

网友评论

      本文标题:SpringBoot实例:医院统一信息平台(资源服务oauth2

      本文链接:https://www.haomeiwen.com/subject/qmunxqtx.html