如何在 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 日志表明我的 ID 提供商是 loading/loaded :
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")
- 当我进入 Identity Providers 面板时,新的提供者是可见的(见屏幕截图)
但是当我尝试配置它时,一切都失败了:
问题是 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 正在寻找档案中名称与特定模式匹配的资源。
我正在为 Keycloa 编写一个自定义身份提供程序,我想使用 deployer method (since I want to deploy it in Docker containers). Following an example 我在网上找到的部署,我创建了一个 maven 项目,其中使用 maven-assembly-plugin,我构建了一个带有依赖项的 jar(但我已经过滤掉了我的依赖项为我提供的各种服务实现,只保留身份提供者服务)。
事情似乎部分正确:
- Keycloak 日志表明我的 ID 提供商是 loading/loaded :
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")
- 当我进入 Identity Providers 面板时,新的提供者是可见的(见屏幕截图)
但是当我尝试配置它时,一切都失败了:
问题是 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 正在寻找档案中名称与特定模式匹配的资源。