From 4d9bb7d34ec0417a7b01f7dc2fa8ee5372818003 Mon Sep 17 00:00:00 2001 From: Matteo Mara Date: Fri, 26 Aug 2022 15:31:26 +0200 Subject: [PATCH] SONAR-17232 improve SAML Documentation --- .../src/images/saml_authentication_flow.png | Bin 0 -> 112686 bytes .../authentication/saml.md | 55 +++++++++++++++--- 2 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 server/sonar-docs/src/images/saml_authentication_flow.png diff --git a/server/sonar-docs/src/images/saml_authentication_flow.png b/server/sonar-docs/src/images/saml_authentication_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..15aefd9a5e355f12d3c8d91371f9cdff53fb6cf0 GIT binary patch literal 112686 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 GO#3&eM$Ah9 literal 0 HcmV?d00001 diff --git a/server/sonar-docs/src/pages/instance-administration/authentication/saml.md b/server/sonar-docs/src/pages/instance-administration/authentication/saml.md index 6556d823694..4e0ee12cd1c 100644 --- a/server/sonar-docs/src/pages/instance-administration/authentication/saml.md +++ b/server/sonar-docs/src/pages/instance-administration/authentication/saml.md @@ -5,6 +5,39 @@ url: /instance-administration/authentication/saml/ You can delegate authentication to a SAML 2.0 Identity Provider using SAML Authentication. +### SAML authentication flow + +1. When a user requests a SonarQube web page and is not already authenticated, SonarQube will start a SAML authentication process. +2. SonarQube creates a SAML request for the configured Identity Provider and sends it back to the user. +3. The user's browser automatically relays the SAML request to the Identity Provider. +4. The Identity Provider authenticates the user and creates a SAML assertion containing the user information and privilege. Optionally, it can encrypt this assertion with the SonarQube certificate. +5. The Identity Provider sends a SAML assertion back to the web browser +6. The user's browser then relays the SAML assertion to SonarQube to authenticate and authorize the user. +7. SonarQube responds with the originally requested resource. + +![SAML Authentication flow](/images/saml_authentication_flow.png) + +During the process, certificates are used to authenticate the Identity Provider and, optionally, SonarQube. +The Identity Provider public certificate is necessary to ensure that the SAML assertion is genuine. +The SonarQube certificate is optional, but ensures that only SonarQube can use the assertion provided. +### Setup + +Property| Description | Default value | Required +---|------------------------------------------------------------------------------------------------------------------------------------|-----------|-------------------------------------------------------------------------- +`sonar.auth.saml.enabled`| Is SAML authentication enabled on SonarQube? | | Yes +`sonar.auth.saml.applicationId`| The ID under which SonarQube is known by the Identity Provider. | sonarqube | Yes +`sonar.auth.saml.providerName`| Name of the Identity Provider displayed in the login page when SAML authentication is active. | SAML | Yes +`sonar.auth.saml.providerId`| The ID of the Identity Provider. | | Yes +`sonar.auth.saml.loginUrl`| The Url where the Identity Provider expect to receive SAML requests. | | Yes +`sonar.auth.saml.certificate.secured`| The public X.509 certificate used by the Identity Provider to authenticate SAML messages. | | Yes +`sonar.auth.saml.user.login`| The name of the attribute where the Identity Provider will put the authenticated user login. | | Yes +`sonar.auth.saml.user.name`| The name of the attribute where the Identity Provider will put the authenticated user name. | | Yes +`sonar.auth.saml.user.email`| The name of the attribute where the Identity Provider will put the authenticated user email. | | No +`sonar.auth.saml.group.name`| The attribute defining the user group in SAML. Users are associated to the default group if this attribute is not defined. | | No +`sonar.auth.saml.signature.enabled`| Is SonarQube expected to sign the SAML requests? If enabled both the service provider private key and certificate must be provided. | | No +`sonar.auth.saml.sp.privateKey.secured`| The PKCS8 private key without password used by SonarQube to sign SAML messages and to decrypt encrypted SAML responses. | | Only if SonarQube requests signature or responses encryption is enabled. +`sonar.auth.saml.sp.certificate.secured`| The public key part of the previously provided private key. | | Only if SonarQube requests signature is enabled. + ### Example: Using Keycloak as a SAML Identity Provider The following example may be useful if you're using Keycloak as a SAML Identity Provider. If you're not using Keycloak, your settings are likely to be different. @@ -26,18 +59,18 @@ The following example may be useful if you're using Keycloak as a SAML Identity | 1. (Optional) **Signing Key**: Add the service provider private key and the certificate if the signature of the requests is enabled on the SonarQube side (Keycloak generated keys can be used). This private key will have to be provided in PKCS8 format in SonarQube. | 1. (Optional) **Encryption Key**: Add the service provider certificate if you want to activate the encryption of Keycloak responses. If request signature is used, you must use the same certificate for the encryption. | 1. In **Client Scopes > Default Client Scopes**, remove "role_list" from "Assigned Default Client Scopes" (to prevent the error `com.onelogin.saml2.exception.ValidationError: Found an Attribute element with duplicated Name` during authentication) -| 1. Under *Mappers*, create a mapper for each user attribute: +| 1. Under *Mappers*, create a mapper for each user attribute: | 1. Create a mapper for the login: | 1. **Name**: "Login" | 1. **Mapper Type**: *User Property* | 1. **Property**: "Username" (note that the login should not contain any special characters other than `.-_@` to meet SonarQube restrictions) | 1. **SAML Attribute Name**: "login" -| 1. Create a mapper for the name: +| 1. Create a mapper for the name: | 1. **Name**: "Name" | 1. **Mapper Type**: *User Property* | 1. **Property**: "Username" (it can also be another attribute you would previously have specified for the users) | 1. **SAML Attribute Name**: "name" -| 1. (Optional) Create a mapper for the email: +| 1. (Optional) Create a mapper for the email: | 1. **Name**: "Email" | 1. **Mapper Type**: *User Property* | 1. **Property**: "Email" @@ -57,7 +90,7 @@ The following example may be useful if you're using Keycloak as a SAML Identity [[collapse]] | ## In SonarQube, Configure SAML authentication -| Go to **[Administration > Configuration > General Settings > Security > SAML](/#sonarqube-admin#/admin/settings?category=security)** +| Go to **[Administration > Configuration > General Settings > Authentication > SAML](/#sonarqube-admin#/admin/settings?category=authentication)** | * **Enabled**: *true* | * **Application ID**: The value of the "Client ID" you set in Keycloak (for example "sonarqube") | * **Provider ID**: The value of the `EntityDescriptor > entityID` attribute in the XML configuration file (e.g., "http://keycloak:8080/auth/realms/sonarqube") @@ -68,12 +101,16 @@ The following example may be useful if you're using Keycloak as a SAML Identity | * (Optional) **SAML user email attribute**: "email" (or whatever you configured above when doing the mapping) | * (Optional) **SAML group attribute** "groups" (or whatever you configured above when doing the mapping) | * **Sign requests**: Set to true to activate the signature of the SAML requests. It needs both the service provider private key and certificate to be set. -| * **Service provider private key**: The service provider private key shared with the identity provider. This key is required for both request signature and response encryption, which can be activated individually. The key should be provided for SonarQube in PKCS8 format without password protection. -| * **Service provider certificate**: The service provider certificate shared with the identity provider in order to activate the requests signature. -| +| * **Service provider private key**: The service provider private key shared with the identity provider. This key is required for both request signature and response encryption, which can be activated individually. The key should be provided for SonarQube in PKCS8 format without password protection. +| * **Service provider certificate**: The service provider certificate shared with the identity provider in order to activate the requests signature. +| | You can find [here](https://manpages.ubuntu.com/manpages/focal/man1/pkcs8.1ssl.html) some instructions to convert different key formats. | | In the login form, the new button "Log in with SAML" allows users to connect with their SAML account. -### SAML and reverse proxy configuration -When using SAML, make sure your reverse proxy is properly configured. See [Operating the Server](/setup/operate-server/) for more information. \ No newline at end of file +### SAML configuration related information and limitations + +* **SAML and reverse proxy configuration**: When using SAML, make sure your reverse proxy is properly configured. See [Operating the Server](/setup/operate-server/) for more information. +* **Migrating from LDAP to SAML as Identity Provider**: A guide on how to perform this migration is available [here](https://community.sonarsource.com/t/migrating-sonarqube-users-between-identity-providers-with-a-focus-on-ldap-saml/48653). +* **Identity Provider initiated authentication is not supported**: This is a known limitation of SonarQube only Service Provider authentication is supported. +* **SAML Single Sign Out is not supported**: Logging off from SonarQube when SAML authentication is enabled, will not result in a disconnection from the other services linked to the same Identity Provider. -- 2.39.5