如何在 Keycloak 中显示身份提供者配置页面?

How to have identity provider configuration page visible in Keycloak?

我正在为 Keycloa 编写一个自定义身份提供程序,我想使用 deployer method (since I want to deploy it in Docker containers). Following an example 我在网上找到的部署,我创建了一个 maven 项目,其中使用 maven-assembly-plugin,我构建了一个带有依赖项的 jar(但我已经过滤掉了我的依赖项为我提供的各种服务实现,只保留身份提供者服务)。

事情似乎部分正确:

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

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

在我的项目中,我遵循代码组织(在 jar-with-dependencies 中复制)

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

我错过了什么?

也许您现在已经明白了。

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

您需要正确注册 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 正在扩展那个,但是你可以在这里使用对你的情况有意义的任何东西)


src/main/resources/theme/foo/admin/resources/partials/realm-identity-provider-foo-ext.html 最后一个文件在我的例子中是空的,但据我所知你必须拥有它


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

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

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

我遇到了同样的问题。通过将 jar 文件重命名为:

解决
keycloak-{identity provider name}-{version}-SNAPSHOT.jar

在此之前文件被调用:

keycloak-{identity provider name}-idp-plugin-{version}-SNAPSHOT.jar 

…我收到“找不到资源”错误。我想 keycloak 正在寻找档案中名称与特定模式匹配的资源。