ruby-on-rails – 在rsa-sha256中的Rails request.create?
我正在进行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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |