【问题标题】:How to specify SAML encryption certificate in ruby-saml?如何在 ruby​​-saml 中指定 SAML 加密证书?
【发布时间】:2020-08-09 04:25:31
【问题描述】:

ruby-saml gem 支持将证书和私钥信息添加到服务提供者的元数据中,但据我所知,它只配置签名证书,而不配置加密证书。这是我的工作:

settings.certificate = "---- BEGIN CERTIFICATE----..."
settings.private_key = "-----BEGIN PRIVATE KEY----..."

这会导致以下 XML 部分添加到服务提供者的元数据中:

<md:KeyDescriptor use='signing'>
      <ds:KeyInfo xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>
        <ds:X509Data>
          <ds:X509Certificate>
CERTIFICATE IS HERE GSDk3tShjl4yhShj4Hr....
          </ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
</md:KeyDescriptor>

但是,除了 use='signing' 之外,我如何配置 ruby​​-saml 来为 use='encryption' 添加类似的部分?

【问题讨论】:

    标签: saml-2.0 ruby-saml


    【解决方案1】:

    如果我理解正确,您将无法以加密形式发送 SAMLResponse。如果是这种情况,在构建 SAML 响应时,再发送一个参数

    saml_response = encode_response( :encryption => encryption_opts())
    
    def encryption_opts: 
    return {
          cert: saml_request.service_provider.cert,
          block_encryption: 'aes256-cbc',
          key_transport: 'rsa-oaep-mgf1p'
    }
    

    【讨论】:

    • 感谢您的回复,但我不确定我是否理解此代码适合的位置。我使用saml_config_hash = OneLogin::RubySaml::IdpMetadataParser.new.parse_to_hash(idp_metadata_file)解析身份提供者提供的SAML元数据文件,并添加到生成的哈希选项中,例如:saml_config_hash.merge( certificate: "--- BEGIN CERTIFICATE---...", private_key: "--- BEGIN PRIVATE KEY---" )
    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2015-09-20
    • 2014-04-04
    • 2014-12-19
    相关资源
    最近更新 更多