我正在编写要使用deployer方法部署的Keycloa的自定义身份提供程序(因为我想在Docker containers中进行部署)。在网上找到一个example之后,我创建了一个maven项目,其中使用maven-assembly-plugin构建了一个具有依赖项的jar(但是我过滤掉了依赖项所提供的各种服务实现)我只保留身份提供者服务)。
事物似乎可以部分正常工作:
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")
但是当我尝试配置它时,一切都会失败:
问题是Keycloak严格不输出日志(即使我将日志级别配置为最大)。
在我的项目中,我让他遵循以下代码组织(在具有依赖关系的jar中复制)
+---src
+---build
| \---assembly
+---main
| +---java
| | \---com
| | \---mycompany
| | \---mygroup
| | \---security
| | \---oidc
| \---resources
| +---META-INF
| | \---services
| \---themes
| \---base
| \---admin
| \---resources
| \---partials
\---test
+---java
\---resources
我想念什么?
答案 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页面应该可以正常工作,或者至少您应该可以从这里进行获取。
我知道这不是一个完美的答案,但是它可能会给您提示要考虑的事情。
如果您有所进步或找到更好的方法,请分享!