Keycloak:如何扩展管理 REST API

问题描述 投票:0回答:2

我已经使用 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

谢谢你

rest keycloak admin
2个回答
1
投票

您可以使用如下所示的 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() {}
}

1
投票

这很有可能,也很简单,正如您所说,您已经在路径中没有

"/admin"
的情况下扩展了API,所以我猜您使用了RealmResourceProvider进行了扩展,要在api中使用
"/admin"
路径扩展API,只需扩展AdminRealmResourceProvider 类而不是 RealmResourceProvider,对于相应的提供者工厂类相同

注意AdminRealmResourceProvider 接口还默认为您提供 adminEvent 和 Auth,现在您的 API 默认情况下需要不记名令牌,因为它现在是管理 API,希望这些信息对您有帮助...

重要的是这个 AdminRealmResourceProvider 类,或者说扩展管理 api 的功能仅存在于 >= Keycloak 版本 19 中

© www.soinside.com 2019 - 2024. All rights reserved.