加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在rsa-sha256中的Rails request.create?

发布时间:2020-12-17 02:08:05 所属栏目:百科 来源:网络整理
导读:我正在进行SAML身份验证 我在rsa-sha256中设置了摘要和签名方法,但是当我创建重定向验证用户的请求时,请求在rsa-sha1中… 在网址中,有SigAlg = http://www.w3.org/2000/09/xmldsig#rsa-sha1 但我希望它是rsa-sha256 设置: def saml_settings settings = On
我正在进行SAML身份验证

我在rsa-sha256中设置了摘要和签名方法,但是当我创建重定向验证用户的请求时,请求在rsa-sha1中…

在网址中,有SigAlg = http://www.w3.org/2000/09/xmldsig#rsa-sha1

但我希望它是rsa-sha256

设置:

def saml_settings
    settings = OneLogin::RubySaml::Settings.new({:idp_cert_fingerprint_algorithm            => XMLSecurity::Document::SHA256})

    settings.assertion_consumer_service_url = "..."
    settings.issuer                         = "..."
    settings.idp_sso_target_url             = "..."
    settings.name_identifier_format         = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
    #settings.authn_context = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"
    settings.certificate = CONFIG_CERTIFICATE
    settings.private_key = CONFIG_PRIVATE_KEY
    settings.security[:authn_requests_signed]  = true     # Enable or not signature on AuthNRequest
    settings.security[:logout_requests_signed] = true     # Enable or not signature on Logout Request
    settings.security[:logout_responses_signed] = true     # Enable or not signature on Logout Response

    settings.security[:digest_method]    = XMLSecurity::Document::SHA256
    settings.security[:signature_method] = XMLSecurity::Document::SHA256

    settings.security[:embed_sign]        = false


    settings
  end

当我创建请求时:

request = OneLogin::RubySaml::Authrequest.new
redirect_to(request.create(saml_settings))

这里,request.create(saml_settings)返回的是在url中,有SigAlg = http://www.w3.org/2000/09/xmldsig#rsa-sha1

如何将其更改为rsa-sha256?

解决方法

实际上,我找到了anwser:

在lib中,sha1 ou sha256 ecryption将由设置定义,

在我们拥有的OneLogin :: RubySaml :: Authrequest的create_params方法中

if settings.security[:authn_requests_signed] && !settings.security[:embed_sign] && settings.private_key
  params['SigAlg'] = XMLSecurity::Document::SHA1
  ... 
end

所以,我有

settings.security[:embed_sign]        = false

所以条件是真的.但它必须是假的

所以我放了

settings.security[:embed_sign]        = true

(实际上,它必须是真的)

request.create(saml_settings,{:SigAlg => XMLSecurity::Document::SHA256}))

它已经完成了!

(cf http://www.rubydoc.info/github/onelogin/ruby-saml/OneLogin/RubySaml/Authrequest#create-instance_method)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读