Spring 基础 rest api 的 Keycloak 安全

Keycloak security for Spring base rest apis

我想将 keycloak 安全功能集成到我的 spring 基于引导的 rest api 中。 我正在使用 KeyCloak 1.3.1 Final。 现在这是纯粹基于休息 api 并且正在通过 postman

进行测试

我的休息 api 得到了保护,当我尝试访问它时确实要求我授权,但我无法执行我的请求。基本上被我的 api.

拒之门外

我会快速列出我已经做过的事情

  1. 创建了 spring 后备箱 api 并进行了测试。它工作正常。
  2. 为 KeyCloak 修改了我的 gradle 并按照此 document
  3. 配置了它
  4. 为 "bearer only" 应用程序配置了我的 keyCloak
  5. 我尝试生成访问令牌,但无法生成。因此,我使用 "confidential" 在 keycloak 中创建了另一个客户端,并使用该客户端生成访问令牌(两个客户端都指向同一个应用程序。我不确定这是否正确)
  6. 使用此访问令牌,我正在尝试进行 api 调用,但收到 401 我再次使用这个 document.

我是 keycloak 和 spring 的新手。


所以我想在这里问的是,在像这里这样的场景中,我们如何生成用于测试休息 api 的访问令牌。

KeyCloak 上可以帮助我的任何有用资源。截至目前,我不知道问题出在哪里?是我的 api 还是我配置 KeyCloak 的方式。 另外,由于我是 spring 的新手,而且我找不到关于如何为 spring 引导配置 cloak 的合适文档。如果你也能帮忙的话。


更进一步,我在 KeyCloak 邮件列表上得知 spring 引导适配器仅支持基本身份验证,因此我决定合并 spring 安全适配器本身。 我这样做了,什么时候 运行 应用程序和提供信用仍然无法使其工作。然而,一些有趣的事情正在发生。我被重定向到 http://127.0.0.1:8090/sso/login 我仔细检查了一下,这不是我提供的重定向 url。 ??? 知道为什么吗? (我又是新手,正在通过这个项目了解 spring 和安全性。所以请多多包涵。)

因此,在花费大量时间并从 keycloak 用户列表获得一些帮助之后,我就是这样工作的。

  1. 使用 Spring 安全性而不是 spring 增强安全适配器(正如我在编辑中已经提到的,启动适配器仅用于基本身份验证)

documentation 很好地解释了所有其他相关内容。

我仍在测试整个过程,并将记录下来以备将来参考。