如何将keydove javaapi与keydove spring boot starter包一起使用

oalqel3c  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(362)

我已经为我的spring引导服务器使用了keydosepspring引导适配器,并且我能够让我的用户通过身份验证。但是,当我想获取用户数据(比如他所在的组)时,我无法通过keyClopePrinciple对象获取数据,我可以通过请求访问该对象。但是,我能够获得用户的id,并且我认为在spring引导应用程序中访问用户配置文件是很简单的,因为它有keydrope适配器。关于如何获取这些数据,或者我是否应该添加或执行其他操作,有什么想法吗?
pom.xml文件

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-security</artifactId>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-spring-boot-starter</artifactId>
            <version>12.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20210307</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>org.springframework.security</groupId>-->
<!--            <artifactId>spring-security-test</artifactId>-->
<!--            <scope>test</scope>-->
<!--        </dependency>-->
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-dependencies</artifactId>
                <version>${spring-boot-admin.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.keycloak.bom</groupId>
                <artifactId>keycloak-adapter-bom</artifactId>
                <version>12.0.4</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

应用程序.yaml

server:
  port: 9000

keycloak:
  auth-server-url: http://localhost:8080/auth
  realm: test
  resource: spring-boot-client
  credentials:
    secret: 41e7abe2-35a4-46c0-ba68-40dd16080b1a
  bearer-only: true
  public-client: true
  securityConstraints:
    - authRoles:
        - CANDIDATE
        - AUTHOR
        - ADMIN
      securityCollections:
        - name: ping
          patterns:
            - /ping
    - authRoles:
        - AUTHOR
        - ADMINN
      securityCollections:
        - name: Author
          patterns:
            - /author

logging:
  level:
    org.keycloak: TRACE

如何访问向spring引导服务器发出请求的用户的id

@GetMapping("/ping")
    public ResponseEntity<String> ping(KeycloakPrincipal<KeycloakSecurityContext> principal) {
        String user_id = principal.getKeycloakSecurityContext().getToken().getSubject();
        return ResponseEntity.ok(user_id);
    }

任何指导都会有帮助,因为我看了所有的文件,我可以得到我的手。是的,key斗篷确实提供了一个javadoc,我引用了它,还提供了一个adminrestapi,我认为这是一个访问这些数据的坏方法(我可能错了)。我想知道仅仅使用starter适配器是否不能让我访问javaapi,因为我只能访问keydrope原理。

iezvtpos

iezvtpos1#

为什么restapi不是获取用户特定数据的好方法?您可以使用客户机机密和最小领域角色配置特定客户机,以获取所需的数据。你看了令牌没有?您需要的信息是否已经在令牌中?
您可以获得类似realm roles token.getotherclaims的数据https://www.keycloak.org/docs-api/10.0/javadocs/org/keycloak/representations/accesstokenresponse.html
您必须确保您Map的信息在令牌中。因此,请查看管理控制台->客户端->您的客户端->Map器->评估
也许你可以发布一些你当前配置的图片

相关问题