3.6. Programmatic OIDC start-up
OIDC 租户可以以编程方式创建,如下例所示:
package io.quarkus.it.oidc; import io.quarkus.oidc.Oidc; import jakarta.enterprise.event.Observes; public class OidcStartup { void observe(@Observes Oidc oidc) { oidc.createWebApp("http://localhost:8180/realms/quarkus", "quarkus-app", "mysecret"); } }
package io.quarkus.it.oidc;
import io.quarkus.oidc.Oidc;
import jakarta.enterprise.event.Observes;
public class OidcStartup {
void observe(@Observes Oidc oidc) {
oidc.createWebApp("http://localhost:8180/realms/quarkus", "quarkus-app", "mysecret");
}
}
Copy to clipboardCopied
以上代码等同于 application.properties
文件中的以下配置:
quarkus.oidc.auth-server-url=http://localhost:8180/realms/quarkus quarkus.oidc.application-type=web-app quarkus.oidc.client-id=quarkus-app quarkus.oidc.credentials.secret=mysecret
quarkus.oidc.auth-server-url=http://localhost:8180/realms/quarkus
quarkus.oidc.application-type=web-app
quarkus.oidc.client-id=quarkus-app
quarkus.oidc.credentials.secret=mysecret
Copy to clipboardCopied
如果您需要配置更多 OIDC 租户属性,请使用 OidcTenantConfig
构建器,如下例所示:
package io.quarkus.it.oidc; import io.quarkus.oidc.Oidc; import io.quarkus.oidc.OidcTenantConfig; import io.quarkus.oidc.common.runtime.config.OidcClientCommonConfig.Credentials.Secret.Method; import jakarta.enterprise.event.Observes; public class OidcStartup { void createDefaultTenant(@Observes Oidc oidc) { var defaultTenant = OidcTenantConfig .authServerUrl("http://localhost:8180/realms/quarkus/") .clientId("quarkus-app") .credentials().clientSecret("mysecret", Method.POST).end() .build(); oidc.create(defaultTenant); } }
package io.quarkus.it.oidc;
import io.quarkus.oidc.Oidc;
import io.quarkus.oidc.OidcTenantConfig;
import io.quarkus.oidc.common.runtime.config.OidcClientCommonConfig.Credentials.Secret.Method;
import jakarta.enterprise.event.Observes;
public class OidcStartup {
void createDefaultTenant(@Observes Oidc oidc) {
var defaultTenant = OidcTenantConfig
.authServerUrl("http://localhost:8180/realms/quarkus/")
.clientId("quarkus-app")
.credentials().clientSecret("mysecret", Method.POST).end()
.build();
oidc.create(defaultTenant);
}
}
Copy to clipboardCopied有关涉及多个租户的更复杂的设置,请参阅 OpenID Connect Multi-Tenancy 指南中的 Programmatic OIDC start-up for multitenant application 部分。