将 Keycloak 集成到 Play2 项目中

Integrating Keycloak into Play2 project

我想将Keycloak认证集成到一个Play2项目中。这是我到目前为止所做的:

直到此时我才找到解决方案。我遇到了 Deadbolt,它可以声明性地表达需要应用于用户和角色的限制,但我无法找到 keycloak 与 Play2 一起使用的适配器。

有没有人做过类似的事情?我想一个解决方案是通过配置然后调用核心 Keycloak 方法来创建自定义适配器。

有人对创建这个 "Keycloak Standalone Adapter" 有什么想法吗?

这取决于您要使用的身份验证机制(openid-connect 或 SAML)。对于我正在处理的应用程序,我们选择了 openid-connect。目前,唯一支持该协议的 play2 库是 https://github.com/pac4j/play-pac4j。棘手的部分是弄清楚 keycloak 在它发送回播放服务器的令牌中编码信息的方式。它通过进行 Base64 编码来实现。我们从 keycloak-js-adapter 翻译算法来提取用户信息。 之后,我们可以使用 Security trait 或创建一个包含授权用户信息的自定义请求包装器。

这 2 条博客条目帮助了我:

  1. 使用 Keycloak 进行用户身份验证

    KeyCloakakka-http

    https://blog.scalac.io/user-authentication-with-keycloak-part1.html

    https://blog.scalac.io/user-authentication-with-keycloak-part2.html

  2. 使用 Scala 和 Play Framework 构建和保护 API

    Auth0play framework

    https://auth0.com/blog/build-and-secure-a-scala-play-framework-api/