将 Keycloak 集成到 Play2 项目中

egy*_*dia 4 maven playframework deadbolt keycloak

我想将 Keycloak 身份验证集成到 Play2 项目中。这是我在此之前所做的:

  • 我下载了 Keycloak:keycloak-1.6.1.Final.zip,解压、运行并通过创建测试域和一些角色进行设置
  • 我下载、配置并运行示例 js-console ( https://github.com/keycloak/keycloak/tree/master/examples/js-console )
  • 我能够创建一个用户并使用 js-console 登录。用户按预期出现在 keycloak 管理员中
  • 现在我也想保护我的后端,这是一个带有 maven 构建的 Play2 项目(使用 play2-maven-plugin:https : //code.google.com/p/play2-maven-plugin/
  • 后端发布一个 REST API,这些调用只需要对具有多个角色的经过身份验证的用户可用。

在此之前,我无法找到解决方案来做到这一点。我遇到了 Deadbolt,它可以声明性地表达需要应用于用户和角色的限制,但是我找不到 keycloak 与 Play2 一起使用的适配器。

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

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

pme*_*pme 5

这 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 框架构建和保护 API

    Auth0play framework

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


小智 1

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