Add support for Auth0 SAML
@@ -84,7 +84,7 @@ export const registerSamlRouter = async (server: FastifyZodProvider) => {
|
|||||||
samlConfig.audience = `spn:${ssoConfig.issuer}`;
|
samlConfig.audience = `spn:${ssoConfig.issuer}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ssoConfig.authProvider === SamlProviders.GOOGLE_SAML) {
|
if (ssoConfig.authProvider === SamlProviders.GOOGLE_SAML || ssoConfig.authProvider === SamlProviders.AUTH0_SAML) {
|
||||||
samlConfig.wantAssertionsSigned = false;
|
samlConfig.wantAssertionsSigned = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ export enum SamlProviders {
|
|||||||
AZURE_SAML = "azure-saml",
|
AZURE_SAML = "azure-saml",
|
||||||
JUMPCLOUD_SAML = "jumpcloud-saml",
|
JUMPCLOUD_SAML = "jumpcloud-saml",
|
||||||
GOOGLE_SAML = "google-saml",
|
GOOGLE_SAML = "google-saml",
|
||||||
KEYCLOAK_SAML = "keycloak-saml"
|
KEYCLOAK_SAML = "keycloak-saml",
|
||||||
|
AUTH0_SAML = "auth0-saml"
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TCreateSamlCfgDTO = {
|
export type TCreateSamlCfgDTO = {
|
||||||
|
|||||||
@@ -0,0 +1,93 @@
|
|||||||
|
---
|
||||||
|
title: "Auth0 SAML"
|
||||||
|
description: "Learn how to configure Auth0 SAML for Infisical SSO."
|
||||||
|
---
|
||||||
|
|
||||||
|
<Info>
|
||||||
|
Auth0 SAML SSO feature is a paid feature. If you're using Infisical Cloud,
|
||||||
|
then it is available under the **Pro Tier**. If you're self-hosting Infisical,
|
||||||
|
then you should contact [email protected] to purchase an enterprise license
|
||||||
|
to use it.
|
||||||
|
</Info>
|
||||||
|
|
||||||
|
<Steps>
|
||||||
|
<Step title="Prepare the SAML SSO configuration in Infisical">
|
||||||
|
In Infisical, head to your Organization Settings > Authentication > SAML SSO Configuration and select **Set up SAML SSO**.
|
||||||
|
|
||||||
|
Next, note the **Application Callback URL** and **Audience** to use when configuring the Auth0 SAML application.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
</Step>
|
||||||
|
<Step title="Create a SAML application in Auth0">
|
||||||
|
2.1. In your Auth0, head to Applications and create an application.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Select **Regular Web Application** and press **Create**.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
2.2. In the Application head to Settings > Application URIs and add the **Application Callback URL** from step 1 into the **Allowed Callback URLs** field.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
2.3. In the Application head to Addons > SAML2 Web App and copy the **Issuer**, **Identity Provider Login URL**, and **Identity Provider Certificate** from the **Usage** tab.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
2.4. Back in Infisical, set **Issuer**, **Identity Provider Login URL**, and **Certificate** to the corresponding items from step 2.3.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
2.5. Back in Auth0, in the **Settings** tab, set the **Application Callback URL** to the **Application Callback URL** from step 1
|
||||||
|
and update the **Settings** field with the JSON under the picture below (replacing `<audience-from-infisical>` with the **Audience** from step 1).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"audience": "<audience-from-infisical>",
|
||||||
|
"mappings": {
|
||||||
|
"email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/email",
|
||||||
|
"given_name": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/firstName",
|
||||||
|
"family_name": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/lastName"
|
||||||
|
},
|
||||||
|
"signatureAlgorithm": "rsa-sha256",
|
||||||
|
"digestAlgorithm": "sha256",
|
||||||
|
"signResponse": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Click **Save**.
|
||||||
|
</Step>
|
||||||
|
<Step title="Enable SAML SSO in Infisical">
|
||||||
|
Enabling SAML SSO allows members in your organization to log into Infisical via Auth0.
|
||||||
|
|
||||||
|

|
||||||
|
</Step>
|
||||||
|
<Step title="Enforce SAML SSO in Infisical">
|
||||||
|
Enforcing SAML SSO ensures that members in your organization can only access Infisical
|
||||||
|
by logging into the organization via Auth0.
|
||||||
|
|
||||||
|
To enforce SAML SSO, you're required to test out the SAML connection by successfully authenticating at least one Auth0 user with Infisical;
|
||||||
|
Once you've completed this requirement, you can toggle the **Enforce SAML SSO** button to enforce SAML SSO.
|
||||||
|
</Step>
|
||||||
|
|
||||||
|
</Steps>
|
||||||
|
|
||||||
|
<Tip>
|
||||||
|
If you are only using one organization on your Infisical instance, you can configure a default organization in the [Server Admin Console](../admin-panel/server-admin#default-organization) to expedite SAML login.
|
||||||
|
</Tip>
|
||||||
|
|
||||||
|
<Note>
|
||||||
|
If you're configuring SAML SSO on a self-hosted instance of Infisical, make
|
||||||
|
sure to set the `AUTH_SECRET` and `SITE_URL` environment variable for it to
|
||||||
|
work:
|
||||||
|
<div class="height:1px;"/>
|
||||||
|
- `AUTH_SECRET`: A secret key used for signing and verifying JWT. This
|
||||||
|
can be a random 32-byte base64 string generated with `openssl rand -base64
|
||||||
|
32`.
|
||||||
|
<div class="height:1px;"/>
|
||||||
|
- `SITE_URL`: The absolute URL of your self-hosted instance of Infisical including the protocol (e.g. https://app.infisical.com)
|
||||||
|
</Note>
|
||||||
@@ -28,6 +28,7 @@ Infisical supports these and many other identity providers:
|
|||||||
- [JumpCloud SAML](/documentation/platform/sso/jumpcloud)
|
- [JumpCloud SAML](/documentation/platform/sso/jumpcloud)
|
||||||
- [Keycloak SAML](/documentation/platform/sso/keycloak-saml)
|
- [Keycloak SAML](/documentation/platform/sso/keycloak-saml)
|
||||||
- [Google SAML](/documentation/platform/sso/google-saml)
|
- [Google SAML](/documentation/platform/sso/google-saml)
|
||||||
|
- [Auth0 SAML](/documentation/platform/sso/auth0-saml)
|
||||||
- [Keycloak OIDC](/documentation/platform/sso/keycloak-oidc)
|
- [Keycloak OIDC](/documentation/platform/sso/keycloak-oidc)
|
||||||
- [Auth0 OIDC](/documentation/platform/sso/auth0-oidc)
|
- [Auth0 OIDC](/documentation/platform/sso/auth0-oidc)
|
||||||
- [General OIDC](/documentation/platform/sso/general-oidc)
|
- [General OIDC](/documentation/platform/sso/general-oidc)
|
||||||
|
|||||||
|
After Width: | Height: | Size: 612 KiB |
|
After Width: | Height: | Size: 366 KiB |
|
After Width: | Height: | Size: 431 KiB |
|
After Width: | Height: | Size: 352 KiB |
|
After Width: | Height: | Size: 253 KiB |
|
After Width: | Height: | Size: 605 KiB |
|
After Width: | Height: | Size: 605 KiB |
|
After Width: | Height: | Size: 539 KiB |
@@ -248,6 +248,7 @@
|
|||||||
"documentation/platform/sso/jumpcloud",
|
"documentation/platform/sso/jumpcloud",
|
||||||
"documentation/platform/sso/keycloak-saml",
|
"documentation/platform/sso/keycloak-saml",
|
||||||
"documentation/platform/sso/google-saml",
|
"documentation/platform/sso/google-saml",
|
||||||
|
"documentation/platform/sso/auth0-saml",
|
||||||
"documentation/platform/sso/keycloak-oidc",
|
"documentation/platform/sso/keycloak-oidc",
|
||||||
"documentation/platform/sso/auth0-oidc",
|
"documentation/platform/sso/auth0-oidc",
|
||||||
"documentation/platform/sso/general-oidc"
|
"documentation/platform/sso/general-oidc"
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ enum AuthProvider {
|
|||||||
AZURE_SAML = "azure-saml",
|
AZURE_SAML = "azure-saml",
|
||||||
JUMPCLOUD_SAML = "jumpcloud-saml",
|
JUMPCLOUD_SAML = "jumpcloud-saml",
|
||||||
KEYCLOAK_SAML = "keycloak-saml",
|
KEYCLOAK_SAML = "keycloak-saml",
|
||||||
GOOGLE_SAML = "google-saml"
|
GOOGLE_SAML = "google-saml",
|
||||||
|
AUTH0_SAML = "auth0-saml"
|
||||||
}
|
}
|
||||||
|
|
||||||
const ssoAuthProviders = [
|
const ssoAuthProviders = [
|
||||||
@@ -33,7 +34,8 @@ const ssoAuthProviders = [
|
|||||||
{ label: "Azure / Entra SAML", value: AuthProvider.AZURE_SAML },
|
{ label: "Azure / Entra SAML", value: AuthProvider.AZURE_SAML },
|
||||||
{ label: "JumpCloud SAML", value: AuthProvider.JUMPCLOUD_SAML },
|
{ label: "JumpCloud SAML", value: AuthProvider.JUMPCLOUD_SAML },
|
||||||
{ label: "Keycloak SAML", value: AuthProvider.KEYCLOAK_SAML },
|
{ label: "Keycloak SAML", value: AuthProvider.KEYCLOAK_SAML },
|
||||||
{ label: "Google SAML", value: AuthProvider.GOOGLE_SAML }
|
{ label: "Google SAML", value: AuthProvider.GOOGLE_SAML },
|
||||||
|
{ label: "Auth0 SAML", value: AuthProvider.AUTH0_SAML }
|
||||||
];
|
];
|
||||||
|
|
||||||
const schema = z
|
const schema = z
|
||||||
@@ -191,6 +193,15 @@ export const SSOModal = ({ popUp, handlePopUpClose, handlePopUpToggle, hideDelet
|
|||||||
issuer: "Issuer",
|
issuer: "Issuer",
|
||||||
issuerPlaceholder: window.origin
|
issuerPlaceholder: window.origin
|
||||||
};
|
};
|
||||||
|
case AuthProvider.AUTH0_SAML:
|
||||||
|
return {
|
||||||
|
acsUrl: "Application Callback URL",
|
||||||
|
entityId: "Audience",
|
||||||
|
entryPoint: "Identity Provider Login URL",
|
||||||
|
entryPointPlaceholder: "https://xxx.auth0.com/samlp/xxx",
|
||||||
|
issuer: "Issuer",
|
||||||
|
issuerPlaceholder: "urn:xxx-xxx.us.auth0.com"
|
||||||
|
};
|
||||||
default:
|
default:
|
||||||
return {
|
return {
|
||||||
acsUrl: "ACS URL",
|
acsUrl: "ACS URL",
|
||||||
|
|||||||