4

我知道用户设置页面是:

https://DOMAIN:PORT/auth/realms/REALM/account/?referrer=APPLICATION

无论如何在没有硬编码服务器 DOMAIN 和其他参数的情况下在 servlet 上生成此 URL(从 keycloak.json 或通过任何提供的 API 从应用程序服务器获取这些参数)?

4

1 回答 1

2

这可以通过从 ServletContext 中获取 Keycloak AdapterDeploymentContext 来实现:

AdapterDeploymentContext deploymentContext = (AdapterDeploymentContext) getServletContext().getAttribute(AdapterDeploymentContext.class.getName());
KeycloakDeployment deployment = deploymentContext.resolveDeployment(null);

然后可以在部署中查询 getAuthServerBaseUrl() 和 getRealm()。我让它在 TomEE 1.7.1(又名 Tomcat 7 和 Keycloak 的 1.1.0-Final)中工作,我相信它也可以在 Java-EE Wildfly 中工作。

为此,您需要 maven-provide 这些工件:

    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-adapter-core</artifactId>
        <version>1.1.0.Final</version>
        <scope>provided</scope>
    </dependency>
于 2015-04-22T13:21:30.240 回答