如何从 RealmResourceProvider 中的 KeycloakSession 获取经过身份验证的用户

How to get authenticated user from KeycloakSession inside RealmResourceProvider

我正在编写一个 Keycloak RealmResourceProvider,我需要访问当前经过身份验证的用户,我使用 keycloak 15.1.1 和 java 代码提供程序。我正在尝试使用 RealmResourceProvider

实现自定义 API

我试过:

 private final AuthenticationManager.AuthResult auth;

public ExampleRestResource(KeycloakSession session) {
    this.session = session;
    this.auth = new AppAuthManager.BearerTokenAuthenticator(session).authenticate();
}

但我收到 class 未找到错误

    17:58:53,848 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (default task-1) Uncaught server error: java.lang.NoClassDefFoundError: org/keycloak/services/managers/AppAuthManager$BearerTokenAuthenticator

有没有其他方法可以从barrer token访问当前用户?

您的类路径似乎缺少以下依赖项:

<dependency>
    <groupId>org.keycloak</groupId>
    <artifactId>keycloak-services</artifactId>
    <version>15.1.1</version>
    <scope>provided</scope>
</dependency>

您可能还需要像这样将其添加到您的 MANIFEST.MF 文件中

Manifest-Version: 1.0
Dependencies: org.keycloak.keycloak-services

或通过您的 jboss-deployment-structure.xml 文件管理依赖项,如下所示

<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.keycloak.keycloak-services"/>
            <!-- … -->
        </dependencies>
    </deployment>
</jboss-deployment-structure>