Code: Select all
@ApplicationScoped
public class CustomTenantConfigResolver implements TenantConfigResolver {
@Override
public Uni resolve(
RoutingContext context, OidcRequestContext requestContext) {
String path = context.request().path();
String[] parts = path.split("/");
if (parts.length < 3) {
return null;
}
if ("store".equals(parts[1])) {
return Uni.createFrom().item(createTenantConfig(parts[2]));
}
return null;
}
private OidcTenantConfig createTenantConfig(String tenantId) {
final AuthenticationConfigBuilder authenticationConfigBuilder =
new AuthenticationConfigBuilder()
.redirectPath("/auth/callback/store")
.scopes(
Arrays.asList(
"openid",
"profile",
"email",
"urn:zitadel:iam:user:resourceowner",
"urn:zitadel:iam:org:id:" + tenantId))
.pkceRequired();
return OidcTenantConfig.authServerUrl("http://localhost:8080")
.clientId("313636401247776172")
.tenantId("storeTenant")
.applicationType(WEB_APP)
.authentication(authenticationConfigBuilder.build())
.tokenStateManager()
.encryptionSecret("changeme")
.end()
.logout()
.path("/logout")
.extraParams(Map.of("client_id", "313636401247776172"))
.end()
.build();
}
}
< /code>
Mein aktueller Ansatz für den Callback -Handler sieht so aus: < /p>
Java < /p>
public class CallbackResource {
@GET
@PermitAll
public Response handleCallback(@Context RoutingContext routingContext,
@Context SecurityContext securityContext,
@Context HttpServerRequest request) {
String originalRequest = null;
if (routingContext.session() != null) {
originalRequest = (String) routingContext.session().get("original-request");
}
String redirectUrl = originalRequest != null ? originalRequest : "/";
if (securityContext.getUserPrincipal() instanceof JsonWebToken) {
JsonWebToken idToken = (JsonWebToken) securityContext.getUserPrincipal();
String tenantId = idToken.getClaim("urn:zitadel:iam:org:id");
if (tenantId != null) {
}
}
return Response.seeOther(URI.create(redirectUrl)).build();
}
}
Was ist der empfohlene Ansatz in einer Quarkus SaaS -Anwendung mit OAuth, um dynamische Umleitungs -URLs basierend auf dem Mieter zu behandeln? http: // localhost: 9000/store/314249607888530860/Dashboard, z. usw.)? < /li>
Ist meine derzeitige Implementierung von Mandantconfigresolver den Umleitungsweg korrekt festgelegt? Wie handelt Quarkus OIDC dies in einem Multi-Mieter-Kontext?>