将Keycloak集成到Play2项目中

时间:2015-12-02 01:04:24

标签: maven playframework keycloak deadbolt

我想将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,它可以声明性地表达需要应用于用户和角色的限制,但是我无法找到适用于与Play2一起使用的keycloak的适配器。

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

有没有人想过创建这个“Keycloak独立适配器”?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这2个博客条目对我有帮助:

  1. 使用密钥斗篷进行用户身份验证

    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/