小编pro*_*Fox的帖子

如何使用 Spring Boot / Keycloak 对后端到后端进行身份验证

我正在尝试使用 Keycloak 和 Spring Boot 以及 Spring Security 和 JWT 令牌(Keycloak 中的仅承载设置)在面向微服务的应用程序的整个后端服务中实现身份验证。

我有一个需要身份验证才能访问 REST 端点的后端服务。该服务为 Web UI 提供数据,并将数据存储在数据库中,以便以后处理。UI 中的用户身份验证以及针对该后端服务的 UI 都已经工作。

然后,还有另一个在后台运行的后端服务,计算第一个提到的后端服务中也应该存在的值。由于该服务需要身份验证,因此进行计算的服务首先需要从 Keycloak 检索访问令牌,以针对其他后端服务进行身份验证,以便 HTTP 帖子工作。

我正在尝试使用 KeycloakRestTemplate 执行 HTTP 发布,但是当我调用 .postForObject 方法时,出现异常:

Caused by: java.lang.IllegalStateException: Cannot set authorization header because there is no authenticated principal
    at org.keycloak.adapters.springsecurity.client.KeycloakClientRequestFactory.getKeycloakSecurityContext(KeycloakClientRequestFactory.java:70)
    at org.keycloak.adapters.springsecurity.client.KeycloakClientRequestFactory.postProcessHttpRequest(KeycloakClientRequestFactory.java:55)
    at org.springframework.http.client.HttpComponentsClientHttpRequestFactory.createRequest(HttpComponentsClientHttpRequestFactory.java:160)
Run Code Online (Sandbox Code Playgroud)

似乎计算服务在调用其他 REST 服务之前不会自动检索身份验证令牌。我在 Google 上对所有这些 Keycloak 特定类进行了大量研究,但我没有找到我需要做什么。

任何人都可以给我一个提示吗?我也不知道 Spring 配置的哪些部分与此处相关,但如果您需要它们,我会提供它们。

编辑

我的计算服务的 application.properties 如下所示:

keycloak.auth-server-url=https://localhost/auth
keycloak.realm=myrealm
keycloak.bearer-only=true
keycloak.resource=backend-service2
keycloak.principal-attribute=preferred_username
keycloak.cors=true
keycloak.realm-key=<PUBKEY>
keycloak.credentials.secret=<SECRET_UUID_STYLE>
keycloak.use-resource-role-mappings=true
Run Code Online (Sandbox Code Playgroud)

更新

感谢@Sai prateek 和@Xtreme Biker。这似乎将我引向了正确的方向。 …

java spring-security jwt spring-boot keycloak

7
推荐指数
1
解决办法
6748
查看次数

如何默认一直以多线程方式运行maven build

我想抽出时间在命令行上输入 -T3,因为我希望我将要做的所有 Maven 构建都运行多线程。

Maven 3.3.9 我用谷歌搜索,但没有找到任何有希望的东西,只有建议为命令行选项添加一个环境变量并将其附加到命令行上的每个 Maven 调用。

Maven:在 pom.xml 中配置并行构建

这样,每次仍然需要手动步骤(输入环境变量的名称)来进行并行构建。

我想在 mvn settings.xml 文件中进行全局配置。

java command-line maven

4
推荐指数
1
解决办法
1381
查看次数

如何获取和使用JHipster Microservice JWT的身份验证令牌

我创建了一个具有JWT身份验证的JHipster微服务应用程序(我只有“后端”,没有Angular GUI)。

在我的application-dev.yml中,有以下几行:

jhipster:
    security:
      authentication:
        jwt:
            secret: password
            # Token is valid 24 hours
            token-validity-in-seconds: 86400
            token-validity-in-seconds-for-remember-me: 2592000
Run Code Online (Sandbox Code Playgroud)

如何通过“ Restlet”(Google Chrome扩展程序)之类的客户端访问API。

我读了一些有关在访问/ api / authenticate时获取令牌的信息,但是它不起作用(使用Postman和JWT的JHipster身份验证

在哪里可以检索JWT令牌,以及如何在后续请求中使用它?

java authentication spring-security jhipster

3
推荐指数
1
解决办法
3859
查看次数