저는 IP와 도메인 이름을 사용하여 페이지에 액세스 할 수있는 다중 부팅을 수행하기 위해 스프링 부팅 어댑터와 키 클로크 스프링 부팅 어댑터를 사용하고 있습니다. 그러나 gradlew 스크립트를 실행하면이 bean이 변경되지 않았 음을 알 수 없습니다. 로거가 포함 된 후에도 로그가 인쇄되지 않으므로이 파일을 전혀 읽지 않는다고 가정합니다. 내가 놓친 게 있니? 또는 멀티 테넌시에 사용할 수있는 구현이 있는지 확인하십시오. 감사.Keycloak과 SpringBoot를 사용한 멀티 테넌시
KeycloakTomcatContextCustomizer이
@Component
public class KeycloakTomcatContextCustomizer implements TomcatContextCustomizer
{
private static final Logger logger = LoggerFactory.getLogger(KeycloakTomcatContextCustomizerBean.class);
@Override
public void customize(Context context)
{
LoginConfig loginConfig = new LoginConfig();
loginConfig.setAuthMethod("--KEYCLOAK--");
context.setLoginConfig(loginConfig);
context.addSecurityRole("myproject");
SecurityConstraint constraint = new SecurityConstraint();
constraint.addAuthRole("myproject");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/contexts");
constraint.addCollection(collection);
context.addConstraint(constraint);
context.addParameter("keycloak.config.resolver", HostBasedKeycloakResolver.class.getName());
}
public class HostBasedKeycloakResolver extends KeycloakSpringBootConfigResolver
{
private KeycloakDeployment keycloakDeployment;
@Autowired
private AdapterConfig adapterConfig;
@Override
public KeycloakDeployment resolve(OIDCHttpFacade.Request request) {
if (keycloakDeployment != null) {
return keycloakDeployment;
}
//get the host part here
//build keycloakdeployment
keycloakDeployment = KeycloakDeploymentBuilder.build(adapterConfig);
adapterConfig.setAuthServerUrl("https://"+host+"/auth");
System.out.println(adapterConfig.getAuthServerUrl());
return keycloakDeployment;
}
}
}
당신이 달성하려고하는 것과 유사한 경우가 발생했습니다
keycloak:
cors: true
realm: Boot-Project
realmKey: AARjANBgkqhkiYUitdhjnCAQ8AMIIBCgKCAQEArOS/TTjkgjdoiQ7F6m5x206lJ+K9VBpEjkjrignxIdH7pJDWv9UMg2CL1q3Tfkjg/YdjkljgkbsnqrSzjBcIU5HQ2AQLkRm2eCPuLIB23d2VS3hZGqvbyqN42hbk/oRhloS0tS2/frq4fIeU53KQiRPPiBt1IEO7DINoDUXdyOWS7g/rSrMkjjUm9SohXdv8u3aB+mnI8gNwEag17Cj+wqoc1smPj5jb/8Ab3MynQHv4ekgXYFPI5BEQSXXflBLbL2kjqR2xP8y8XTsOz58XLyWBydjN2R37uds9D2TqipU3tdc286b276RhNCwIDAQAB
auth-server-url: https://${__AUTH_VM__:localhost}/auth
ssl-required: none
resource: myproject
bearer-only: true
public-client: false
credentials:
secret: ls5f7c3g-d045-444f-8234-6cth6970726y
securityConstraints[0]:
securityCollections[0]:
name: secured context api and app
authRoles:
- commongui
patterns:
- /contexts/*
- /config.json
예! 작동합니다. 감사 – James