【发布时间】:2022-08-03 09:21:02
【问题描述】:
我希望两个不同领域的用户(例如人类用户和 S2S 用户)访问同一个休息端点。我能找到的所有多租户示例(例如keycloak multi-tenancy docs)都建议实施KeycloakConfigResolver 以根据请求路径选择单个领域。例如:
public class PathBasedKeycloakConfigResolver implements KeycloakConfigResolver {
private final KeycloakDeployment realm1Deployment;
private final KeycloakDeployment realm2Deployment;
public PathBasedKeycloakConfigResolver() throws IOException {
realm1Deployment = buildDeployment(\"realm1.json\");
realm2Deployment = buildDeployment(\"realm2.json\");
}
@Override
public KeycloakDeployment resolve(HttpFacade.Request request) {
String path = request.getRelativePath();
return path.startsWith(\"clients/\") ? realm1Deployment : realm2Deployment;
}
private static KeycloakDeployment buildDeployment(String path) throws IOException {
return KeycloakDeploymentBuilder.build(new ClasspathResource(path).getInputStream());
}
}
但这需要我为每个请求路径选择一个领域。
我想要不同的功能,我想尝试对多个领域的请求进行身份验证,然后选择第一个成功的。我觉得这将是支持单个 URI 的多个领域的合乎逻辑的方式,但我对实现这一点的建议持开放态度。
标签: java spring-security keycloak spring-security-oauth2