如何使用证书对功能区负载平衡器和Zuul代理进行身份验证?

时间:2020-07-15 16:23:25

标签: spring authentication certificate netflix-zuul netflix-ribbon

我有一个Spring应用程序,它充当两个后端服务器的身份验证代理。用户成功通过身份验证后,将访问Spring应用程序并将其转发到后端。为了防止在没有事先身份验证的情况下进行不必要的访问,后端服务器需要使用证书作为身份验证。

我的Spring应用程序使用Netflix-Ribbon作为负载平衡器,并使用Netflix-Zuul作为用户请求的代理。如何配置它们以使用后端服务器上的身份验证所需的客户端证书?

1 个答案:

答案 0 :(得分:0)

好,我知道了。您可以将自己的CloasableHttpClient配置为@Bean并创建自定义SSL上下文。您可以通过.loadKeyMaterial()向服务器提供证书。然后Zuul将使用这些设置。

@Configuration
public class HttpClientConfig {

    @Bean
    public CloseableHttpClient httpClient() throws Throwable {

        String keyPassphrase = "yourCertificatePassword";

        KeyStore keyStore = KeyStore.getInstance("PKCS12");
        keyStore.load(new FileInputStream("Path/to/your/clientCert.pfx"), keyPassphrase.toCharArray());

        SSLContext sslContext = SSLContexts.custom()
                .loadKeyMaterial(keyStore, keyPassphrase.toCharArray())
                .build();

        return HttpClients.custom()
                .setSSLContext(sslContext)
                .build();
    }
}