如何使身份提供者配置页面在Keycloak中可见?

时间:2018-10-11 09:50:34

标签: plugins keycloak oidc

我正在编写要使用deployer方法部署的Keycloa的自定义身份提供程序(因为我想在Docker containers中进行部署)。在网上找到一个example之后,我创建了一个maven项目,其中使用maven-assembly-plugin构建了一个具有依赖项的jar(但是我过滤掉了依赖项所提供的各种服务实现)我只保留身份提供者服务)。

事物似乎可以部分正常工作:

  • Keycloak日志表明我的ID提供程序正在加载/加载:keycloak_1 | 09:23:20,056 INFO [org.jboss.as.server] (ServerService Thread Pool -- 29) WFLYSRV0010: Deployed "mycompnay-oidc-id-provider-0.0.1-SNAPSHOT-jar-with-dependencies.jar" (runtime-name : "mycompany-oidc-id-provider-0.0.1-SNAPSHOT-jar-with-dependencies.jar")
  • 当我进入身份提供者面板时,新的提供者可见(请参见屏幕截图)

my id provider is loaded !

但是当我尝试配置它时,一切都会失败:

I should have a configuration screen

问题是Keycloak严格不输出日志(即使我将日志级别配置为最大)。

在我的项目中,我让他遵循以下代码组织(在具有依赖关系的jar中复制)

+---src
    +---build
    |   \---assembly
    +---main
    |   +---java
    |   |   \---com
    |   |       \---mycompany
    |   |           \---mygroup
    |   |               \---security
    |   |                   \---oidc
    |   \---resources
    |       +---META-INF
    |       |   \---services
    |       \---themes
    |           \---base
    |               \---admin
    |                   \---resources
    |                       \---partials
    \---test
        +---java
        \---resources

我想念什么?

1 个答案:

答案 0 :(得分:0)

也许您现在已经知道了。

记录的不是很好...一个月前我做过类似的事情,但遇到了同样的问题。我已经通过拨弄和猜测来弄清楚了,所以这可能不是最好的方法,但是我会说我所知道的:

您需要正确注册idp和部分页面。 老实说,我不知道您是否可以通过这种方式扩展基本keycloak管理主题。我已经尝试过,但失败极了。因此,我创建了自己的主题以扩展基本主题:

假设您的idp是 foo


src/main/resources/theme/foo/admin/theme.properties

parent=keycloak
import=common/keycloak

src/main/resources/theme/foo/admin/resources/partials/realm-identity-provider-foo.html

<div data-ng-include 
  data-src="resourceUrl + '/partials/realm-identity-provider-oidc.html'">
</div>

src/main/resources/theme/foo/admin/resources/partials/realm-identity-provider-foo.html

<div data-ng-include 
  data-src="resourceUrl + '/partials/realm-identity-provider-oidc.html'">
</div>

(我使用的是oidc,因为我的idp扩展了该IDC,但是您可以在这里使用适合您情况的任何东西)


src/main/resources/theme/foo/admin/resources/partials/realm-identity-provider-foo-ext.html 在我的情况下,最后一个文件为空,但据我所知您必须拥有它


然后,在管理控制台上,您需要将管理主题更改为foo,并且必须刷新浏览器,以便它开始从新主题中获取资源。请务必注意,如果您是使用另一个领域的用户(例如,来自主领域的admin)登录的,则必须更改主领域的admin主题,因为这是您实际上正在使用的主题。 如果成功,您应该开始在devtools中看到模板资源现在来自您的主题,例如auth/resources/4.4.0.final/admin/foo/templates/kc-tabs-realm.html 如果是这种情况,那么您的idp页面应该可以正常工作,或者至少您应该可以从这里进行获取。

我知道这不是一个完美的答案,但是它可能会给您提示要考虑的事情。

如果您有所进步或找到更好的方法,请分享!