zulip/templates/zerver/help/saml-authentication.md

6.6 KiB

SAML authentication

{!admin-only.md!}

Zulip supports using SAML authentication for single sign-on, both for Zulip Cloud and self-hosted Zulip servers.

This page describes how to configure SAML authentication with several common providers:

  • Okta
  • OneLogin
  • AzureAD
  • Keycloak

Other SAML providers are supported as well.

If you are self-hosting Zulip, please follow the detailed setup instructions in the SAML configuration for self-hosting. The documentation on this page may be a useful reference for how to set up specific SAML providers.

!!! warn "" Zulip Cloud customers who wish to use SAML authentication must upgrade to the Zulip Cloud Plus plan. Contact support@zulip.com for plan benefits and pricing.

Configure SAML

{start_tabs}

{tab|okta}

{!upgrade-to-plus-if-needed.md!}

  1. Set up SAML authentication by following Okta's documentation. Specify the following fields, skipping Default RelayState and Name ID format:

    • Single sign on URL: https://auth.zulipchat.com/complete/saml/
    • Audience URI (SP Entity ID): https://zulipchat.com
    • Application username format: Email
    • Attribute statements:
      • email to user.email
      • first_name to user.firstName
      • last_name to user.lastName
  2. Assign the appropriate accounts in the Assignments tab. These are the users that will be able to log in to your Zulip organization.

  3. {!send-us-info.md!}

    1. Your organization's URL
    2. The Identity Provider metadata provided by Okta for the application {!saml-login-button.md!}

{tab|onelogin}

{!upgrade-to-plus-if-needed.md!}

  1. Navigate to the OneLogin Applications page, and click Add App.

  2. Search for the SAML Custom Connector (Advanced) app and select it.

  3. Set a name and logo and click Save. This doesn't affect anything in Zulip, but will be shown on your OneLogin Applications page.

  4. In the Configuration section, specify the following fields. Leave the remaining fields as they are, including blank fields.

    • Audience: https://zulipchat.com
    • Recipient: https://auth.zulipchat.com/complete/saml/
    • ACS URL: https://auth.zulipchat.com/complete/saml/
    • ACS URL Validator: https://auth.zulipchat.com/complete/saml/
  5. In the Parameters section, add the following custom parameters. Set the Include in SAML assertion flag on each parameter.

    Field name Value
    email Email
    first_name First Name
    last_name Last Name
    username Email
  6. {!send-us-info.md!}

    1. Your organization's URL
    2. The issuer URL from the SSO section. It contains required Identity Provider metadata. {!saml-login-button.md!}

{tab|azuread}

{!upgrade-to-plus-if-needed.md!}

  1. From your AzureAD Dashboard, navigate to Enterprise applications, click New application, followed by Create your own application.

  2. Enter a name (e.g., Zulip Cloud) for the new AzureAD application, choose Integrate any other application you don't find in the gallery (Non-gallery), and click Create.

  3. From your new AzureAD application's Overview page that opens, go to Single sign-on, and select SAML.

  4. In the Basic SAML Configuration section, specify the following fields:

    • Identifier (Entity ID): https://zulipchat.com
    • Default: checked (This is required for enabling IdP-initiated sign on.)
    • Reply URL (Assertion Consumer Service URL): https://auth.zulipchat.com/complete/saml/
  5. If you want to set up IdP-initiated sign on, in the Basic SAML Configuration section, also specify:

    • RelayState: {"subdomain": "<your organization's zulipchat.com subdomain>"}
  6. Check the User Attributes & Claims configuration, which should already be set to the following. If the configuration is different, please indicate this when contacting support@zulip.com (see next step).

    • givenname: user.givenname
    • surname: user.surname
    • emailaddress: user.mail
    • name: user.principalname
    • Unique User Identifier: user.principalname
  7. {!send-us-info.md!}

    1. Your organization's URL
    2. From the SAML Signing Certificate section: * App Federation Metadata Url * Certificate downloaded from Certificate (Base64)
    3. From the Set up section
      • Login URL
      • Azure AD Identifier {!saml-login-button.md!}

{tab|keycloak}

{!upgrade-to-plus-if-needed.md!}

  1. Make sure your Keycloak server is up and running.

  2. In Keycloak, register a new Client for your Zulip organization:

    • Client-ID: https://zulipchat.com
    • Client Protocol: saml
    • Client SAML Endpoint: (empty)
  3. In the Settings tab for your new Keycloak client, set the following properties:

    • Valid Redirect URIs: https://auth.zulipchat.com/*
    • Base URL: https://auth.zulipchat.com/complete/saml/
    • Client Signature Required: Disable
  4. In the Mappers tab for your new Keycloak client:

    • Create a Mapper for the first name:
      • Property: firstName
      • Friendly Name: first_name
      • SAML Attribute Name: first_name
      • SAML Attribute Name Format: Basic
    • Create a Mapper for the last name:
      • Property: lastName
      • Friendly Name: last_name
      • SAML Attribute Name: last_name
      • SAML Attribute Name Format: Basic
    • Create a Mapper for the email address:
      • Property: email
      • Friendly Name: email
      • SAML Attribute Name: email
      • SAML Attribute Name Format: Basic
  5. {!send-us-info.md!}

    1. Your organization's URL
    2. The URL of your Keycloak realm. {!saml-login-button.md!}

!!! tip ""

Your Keycloak realm URL will look something like this: `https://keycloak.example.com/auth/realms/yourrealm`.

{end_tabs}

!!! tip ""

Once SAML has been configured, consider also [configuring SCIM](/help/scim).