summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlair Lunceford <blunceford@gitlab.com>2019-08-30 19:05:08 +0000
committerBlair Lunceford <blunceford@gitlab.com>2019-08-30 19:05:08 +0000
commit442fcd308b1b193d1f7d5a2b4918f331e6a5a7b1 (patch)
tree9e01a0d450d981192301f415aa04f230797be958
parent663b7bb4771f3261d7451b6e1d74c778fd0e3589 (diff)
downloadgitlab-ce-442fcd308b1b193d1f7d5a2b4918f331e6a5a7b1.tar.gz
Add information on signing and encrypting for SAML
-rw-r--r--doc/integration/saml.md55
1 files changed, 55 insertions, 0 deletions
diff --git a/doc/integration/saml.md b/doc/integration/saml.md
index de160e72dda..e7c8c6537c4 100644
--- a/doc/integration/saml.md
+++ b/doc/integration/saml.md
@@ -429,6 +429,61 @@ args: {
}
```
+### Signing
+
+The SAML integration supports both embedded and `GET` parameters for a signature. In order to sign, you need to define the private key and the public certificate of your GitLab instance. The settings related to signing can be set in the `security` section of the configuration.
+
+```yaml
+args: {
+ assertion_consumer_service_url: 'https://gitlab.example.com/users/auth/saml/callback',
+ idp_cert_fingerprint: '43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8',
+ idp_sso_target_url: 'https://login.example.com/idp',
+ issuer: 'https://gitlab.example.com',
+ name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
+ certificate: '-----BEGIN CERTIFICATE-----
+ <redacted>
+ -----END CERTIFICATE-----',
+ private_key: '-----BEGIN PRIVATE KEY-----
+ <redacted>
+ -----END PRIVATE KEY-----',
+ security: {
+ authn_requests_signed: true, # enable signature on AuthNRequest
+ want_assertions_signed: true, # enable the requirement of signed assertion
+ embed_sign: true, # embedded signature or HTTP GET parameter signature
+ metadata_signed: false, # enable signature on Metadata
+ signature_method: 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256',
+ digest_method: 'http://www.w3.org/2001/04/xmlenc#sha256',
+ }
+}
+```
+
+GitLab will sign the request and responses with its private key. Your Identity Provider will validate the signature of the received request and responses with the public x500 certificate of GitLab. For more information on this option, see the [ruby-saml gem documentation](https://github.com/onelogin/ruby-saml/tree/v1.7.0). The ruby-saml gem is used by the [omniauth-saml gem](https://github.com/omniauth/omniauth-saml) to implement the client-side of the SAML authentication.
+
+### Encryption
+
+The SAML integration supports EncryptedAssertion. You need define the private key and the public certificate of your GitLab instance in the SAML settings:
+
+```yaml
+args: {
+ assertion_consumer_service_url: 'https://gitlab.example.com/users/auth/saml/callback',
+ idp_cert_fingerprint: '43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8',
+ idp_sso_target_url: 'https://login.example.com/idp',
+ issuer: 'https://gitlab.example.com',
+ name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
+ certificate: '-----BEGIN CERTIFICATE-----
+ <redacted>
+ -----END CERTIFICATE-----',
+ private_key: '-----BEGIN PRIVATE KEY-----
+ <redacted>
+ -----END PRIVATE KEY-----'
+}
+```
+
+Your Identity Provider will encrypt the assertion with the public certificate of GitLab. GitLab will decrypt the EncryptedAssertion with its private key.
+
+>**Note:**
+This integration uses the `certificate` and `private_key` settings for both the sign and encrypt/decrypt processes.
+
## Troubleshooting
### 500 error after login