收敛 IAM 仓储与 Hydra 网关并恢复数据源自动配置

This commit is contained in:
2026-09-29 13:21:34 +00:00
parent 62b6e9db40
commit fdf2e4958b
30 changed files with 267 additions and 195 deletions
@@ -14,15 +14,23 @@ import top.ddupan.iam.login.authorization.infrastructure.hydra.*;
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(prefix = "iam.hydra", name = "enabled", havingValue = "true")
@EnableConfigurationProperties(HydraProperties.class)
@EnableConfigurationProperties({HydraProperties.class, HydraHttpProperties.class})
@org.springframework.aot.hint.annotation.RegisterReflectionForBinding({HydraAdminClient.Request.class,
HydraLogoutClient.Response.class, HydraLogoutClient.LogoutClient.class, HydraAdminClient.Client.class, HydraAdminClient.Context.class, HydraAdminClient.Redirect.class})
HydraAdminClient.LogoutResponse.class, HydraAdminClient.LogoutClient.class, HydraAdminClient.Client.class, HydraAdminClient.Context.class, HydraAdminClient.Redirect.class})
class HydraConfiguration {
@Bean top.ddupan.iam.login.authorization.application.port.LogoutGateway logoutGateway(HydraProperties properties) {
return new HydraLogoutClient(properties);
@Bean
org.springframework.web.client.RestClient hydraAdminHttpClient(
org.springframework.web.client.RestClient.Builder builder, HydraProperties properties,
HydraHttpProperties timeouts) {
var http = java.net.http.HttpClient.newBuilder().connectTimeout(timeouts.connectTimeout())
.followRedirects(java.net.http.HttpClient.Redirect.NEVER).build();
var factory = new org.springframework.http.client.JdkClientHttpRequestFactory(http);
factory.setReadTimeout(timeouts.readTimeout());
return builder.baseUrl(properties.adminUrl().toString()).requestFactory(factory).build();
}
@Bean HydraGateway hydraGateway(HydraProperties properties, MfaPolicy requiredMfa) {
return new HydraAdminClient(properties);
@Bean HydraGateway hydraGateway(HydraProperties properties, MfaPolicy requiredMfa,
org.springframework.web.client.RestClient hydraAdminHttpClient) {
return new HydraAdminClient(properties, hydraAdminHttpClient);
}
@Bean AuthorizationPolicy authorizationPolicy(HydraProperties properties) {
return new AuthorizationPolicy(properties.clients(), properties.subjects().stream().collect(Collectors.toMap(