我已经使用 Keycloak 文档中描述的机制扩展了 Keycloak REST API,将我的 REST 端点添加到 URL
{{server}}/auth/realms/{{realm}}/myApi
,并且工作正常。
但是,我的 api 是公司内部的,我的 IT 要求我将其放在 /admin 后面(出于合法的安全原因),因此我应该在这里拥有我的 api :
{{server}}/auth/admin/realms/{{realm}}/myApi
是否可以将端点添加到 /admin“后面”?
我目前使用 Keycloak 的(过时的)版本 15.0.2 和 WildFly
谢谢你
您可以使用如下所示的 AdminRealmResourceProvider、AdminRealmResourceProviderFactory 类使用自定义路径扩展 /admin 端点。
public class CustomAdminRealmResourceProvider implements AdminRealmResourceProvider, AdminRealmResourceProviderFactory {
@Override
public AdminRealmResourceProvider create(KeycloakSession session) {
return this;
}
@Override
public Object getResource(KeycloakSession session, RealmModel realm, AdminPermissionEvaluator auth, AdminEventBuilder adminEvent) {
return new CustomMyApiResource(session, auth);
}
@Override
public String getId() {
return "myApi";
}
@Override
public void init(Scope config) { }
@Override
public void postInit(KeycloakSessionFactory factory) {}
@Override
public void close() {}
}
这很有可能,也很简单,正如您所说,您已经在路径中没有
"/admin"
的情况下扩展了API,所以我猜您使用了RealmResourceProvider进行了扩展,要在api中使用"/admin"
路径扩展API,只需扩展AdminRealmResourceProvider 类而不是 RealmResourceProvider,对于相应的提供者工厂类相同
注意: AdminRealmResourceProvider 接口还默认为您提供 adminEvent 和 Auth,现在您的 API 默认情况下需要不记名令牌,因为它现在是管理 API,希望这些信息对您有帮助...
重要的是这个 AdminRealmResourceProvider 类,或者说扩展管理 api 的功能仅存在于 >= Keycloak 版本 19 中