4

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

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

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

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

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

4

2 回答 2

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/

于 2019-03-29T09:48:47.187 回答
0

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

于 2015-12-25T19:23:48.880 回答