将 Keycloak 集成到 Play2 项目中
Integrating Keycloak into Play2 project
我想将Keycloak认证集成到一个Play2项目中。这是我到目前为止所做的:
- 我下载了 Keycloak:keycloak-1.6.1.Final.zip,解压缩,运行 并通过创建测试领域和一些角色进行设置
- 我下载、配置并 运行 示例 js-console (https://github.com/keycloak/keycloak/tree/master/examples/js-console)
- 我能够创建用户并使用 js 控制台登录。用户按预期出现在密钥斗篷管理员中
- 现在我也想保护我的后端,这是一个带有 maven 构建的 Play2 项目(使用 play2-maven-plugin:https://code.google.com/p/play2-maven-plugin/)
- 后端发布了一个 REST API,这些调用需要仅供拥有多个角色的经过身份验证的用户使用。
直到此时我才找到解决方案。我遇到了 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 条博客条目帮助了我:
使用 Keycloak 进行用户身份验证
KeyCloak
与 akka-http
https://blog.scalac.io/user-authentication-with-keycloak-part1.html
https://blog.scalac.io/user-authentication-with-keycloak-part2.html
使用 Scala 和 Play Framework 构建和保护 API
Auth0
与 play framework
https://auth0.com/blog/build-and-secure-a-scala-play-framework-api/
我想将Keycloak认证集成到一个Play2项目中。这是我到目前为止所做的:
- 我下载了 Keycloak:keycloak-1.6.1.Final.zip,解压缩,运行 并通过创建测试领域和一些角色进行设置
- 我下载、配置并 运行 示例 js-console (https://github.com/keycloak/keycloak/tree/master/examples/js-console)
- 我能够创建用户并使用 js 控制台登录。用户按预期出现在密钥斗篷管理员中
- 现在我也想保护我的后端,这是一个带有 maven 构建的 Play2 项目(使用 play2-maven-plugin:https://code.google.com/p/play2-maven-plugin/)
- 后端发布了一个 REST API,这些调用需要仅供拥有多个角色的经过身份验证的用户使用。
直到此时我才找到解决方案。我遇到了 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 条博客条目帮助了我:
使用 Keycloak 进行用户身份验证
KeyCloak
与akka-http
https://blog.scalac.io/user-authentication-with-keycloak-part1.html
https://blog.scalac.io/user-authentication-with-keycloak-part2.html
使用 Scala 和 Play Framework 构建和保护 API
Auth0
与play framework
https://auth0.com/blog/build-and-secure-a-scala-play-framework-api/