Spring-Security-SAML2-Service-Provider 6.1.3 中 KeyManager 和 JKSKeyManager 的替代品?

问题描述 投票:0回答:1

我目前正在开发一个使用 Spring 的 SAML2 安全模块的项目。该项目正在使用旧的、已停产的版本,

spring-security-saml2-core 1.0.10.RELEASE
。作为项目维护的一部分并保持依赖项最新,我正在尝试迁移到
spring-security-saml2-service-provider 6.1.3

我能够迁移大多数组件和服务,但与密钥管理相关的类除外,特别是

JKSKeyManager
KeyManager
。在旧版本中,这些类对于 SAML 身份验证的工作至关重要。我搜索了官方文档、论坛和在线资源,但找不到任何明确的替代方案或解决方案。

我正在寻找

spring-security-saml2-service-provider 6.1.3
中的替代类或配置,可以替换
JKSKeyManager
KeyManager
以保持相同的功能。非常感谢任何指向相关类、方法或文档的帮助。

java spring-security migration saml key-management
1个回答
0
投票

您可以按如下方式配置您的

RelyingPartyRegistrationRepository
来读取您的密钥库文件:

@Bean
public RelyingPartyRegistrationRepository relyingPartyRegistrations() throws Exception {

    //Here I read a jks file but you can replace the default type with "PKCS12" for example
    KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
    char[] pwd = keyStorePassword.toCharArray();
    Resource keystoreRes = new ClassPathResource(keyStoreLocation);
    ks.load(keystoreRes.getInputStream(), pwd);

    //Fetch the private key contained in the jks file
    PrivateKey privateRSAKey = (PrivateKey) ks.getKey(keyStoreAlias, keyStorePassword.toCharArray());

    //Fetch the cerrtificate contained in the jks file
    X509Certificate cert = (X509Certificate) ks.getCertificate(keyStoreAlias);

    //Give your certificate to spring relying party bean
    RelyingPartyRegistration registration = RelyingPartyRegistrations
        .fromMetadataLocation(assertingPartyMetadataLocation)
        .registrationId("example")
        .signingX509Credentials((c) -> c.add(Saml2X509Credential.signing(privateRSAKey, cert)))
        .decryptionX509Credentials((c) -> c.add(Saml2X509Credential.decryption(privateRSAKey, cert)))
        .build();
    return new InMemoryRelyingPartyRegistrationRepository(registration);
  }

我也没有找到任何关于 spring 的文档来做到这一点。 这段代码可以读取您的密钥库文件,但是单独使 saml 与 spring security 6 一起工作还不够。我建议您参考此文档来实现您的过滤器以及与此

RelyingPartyRegistrationRepository
bean 一起使用的安全过滤器链: SAML 2.0 登录概述

© www.soinside.com 2019 - 2024. All rights reserved.