Ruby 在Gitlab上使用SAML进行无签名AuthnRequest

Ruby 在Gitlab上使用SAML进行无签名AuthnRequest,ruby,gitlab,saml,Ruby,Gitlab,Saml,我尝试使用SAML2.0在Gitlab上实现SSO,但遇到了一些问题 我公司的IdP经理向我发送了他们的元数据,并遵循关于SAML的Gitlab文档,我这样配置了Gitlab gitlab_rails['omniauth_enabled']=true gitlab_rails['omniauth_allow_single_sign_on']=['saml'] gitlab_rails['omniauth_block_auto_created_users']=true gitlab_rails['

我尝试使用SAML2.0在Gitlab上实现SSO,但遇到了一些问题

我公司的IdP经理向我发送了他们的元数据,并遵循关于SAML的Gitlab文档,我这样配置了Gitlab

gitlab_rails['omniauth_enabled']=true
gitlab_rails['omniauth_allow_single_sign_on']=['saml']
gitlab_rails['omniauth_block_auto_created_users']=true
gitlab_rails['omniauth_auto_link_ldap_user']=false
gitlab_rails['omniauth_auto_link_saml_user']=false
gitlab_rails['omniauth_providers']=
[
{
名称:“saml”,
args:
{
断言\u消费者\u服务\u url:“https://my.domain.com/gitlab/auth/saml/callback",
idp_证书:
-----开始证书-----
IDP_证书
-----结束证书-----
",
idp\u sso\u目标\u url:“https://my_idp_target_URL",
发行人:“sp gitlab”,
名称\标识符\格式:“urn:oasis:names:tc:SAML:1.1:nameid格式:未指定”,
},
标签:“SSO”
}
]
我将元数据发送给IdP,并被接受


我的证书
迈塞特
urn:oasis:names:tc:SAML:2.0:nameid格式:持久
必需属性
当我尝试使用SSO连接到Gitlab时,出现了一个错误。我的AuthnRequest没有签名。IdP的经理告诉我问题来自我的申请证书。 这是我对Gitlab HTTPS的看法

nginx['redirect\u http\u to\u https']=true
nginx['redirect_http_to_https_port']=443
...
nginx['ssl_certificate']=“/etc/gitlab/ssl/prod.cer”
nginx['ssl\u certificate\u key']=“/etc/gitlab/ssl/prod.key”
我的Gitlab实例运行在Apache代理之后,Gitlab使用的证书也用于此Apache上的网站

那为什么我的AuthnRequest中没有签名呢?我错在哪里?我错过了什么


备注:我对SAML和Gitlab配置非常陌生,所以我可能错过了一些明显的东西

根据我的知识和经验,AuthnRequest中没有签名。签名或加密在下一个HTTP请求中开始

见:

如果有错误,您在哪里发现了错误

(示例)Authnrequest没有签名:

<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
                    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
                    ID="_a976498d2ebe858cc56d486b5af2085ed957f45c5a"
                    Version="2.0"
                    IssueInstant="2017-08-10T13:29:09Z"
                    Destination="https://<idp_url>/idp/profile/SAML2/Redirect/SSO"
                    AssertionConsumerServiceURL="https://<mahara_adress>/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp"
                    ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
                    >
    <saml:Issuer>https://<mahara_adress>/mahara</saml:Issuer>
</samlp:AuthnRequest>

https:///mahara

您需要将证书和私钥添加到gitlab参数中。此外,您还需要指定安全参数以启用签名的生成

这是一个示例:

gitlab_rails['omniauth_auto_sign_in_with_provider'] = 'saml'
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_auto_link_saml_user'] = true
gitlab_rails['omniauth_providers'] = [
    {
        name: 'saml',
        args: {
            assertion_consumer_service_url: 'https://mywebsite/users/auth/saml/callback',
            assertion_consumer_service_binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
            idp_cert_fingerprint: '77:EE:EE:AA:67:FA:78:4C:E2:ED:E8:57:AC:EE:AC:AB:AA:FF:FD:FD',
            idp_sso_target_url: 'https://idp.url/auth/SSOPOST/metaAlias/ent/providerIDP',
            idp_sso_target_binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
            idp_slo_target_url: 'https://idp.url/auth/IDPSloPOST/metaAlias/ent/providerIDP',
            idp_slo_target_binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
            sso_binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
            protocol_binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
            issuer: 'sp_gitlab',
            name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
            certificate: "-----BEGIN CERTIFICATE-----
MIIDzjCCArYCCQCxUOzAVm5w3DANBgkqhkiG9w0BAQUFADCBqDELMAkGA1UEBhMC
....
v84ULsyAgv8sVJ4XerZ9wr7B
-----END CERTIFICATE-----",
            private_key: "-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAxcTsJ0sBMAH9NwEvDT5qcGBA6JiChtM90I9di7YC98lO5qFM
....
lfIj9QAaFdL9lPskg6zX6HEooOEoLib8fm9IZCIChjhsdjoj/6QXP6k=
-----END RSA PRIVATE KEY-----",
            security: {
                authn_requests_signed: true,
                embed_sign: true,
                digest_method: "XMLSecurity::Document::SHA1",
                signature_method: "http://www.w3.org/2000/09/xmldsig#rsa-sha1"
            }
        },
        label: 'SAML Auth'
    }
]