> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getcollate.io/llms.txt
> Use this file to discover all available pages before exploring further.

# AWS Cognito SSO Configuration for Confidential Apps

> Learn to configure AWS Cognito SSO for confidential clients with OIDC, secure token handling, and client secret setup for web and backend apps.

# AWS Cognito SSO Configuration (Confidential)

* [Troubleshooting](#troubleshooting)

AWS Cognito SSO enables users to log in using credentials from an AWS Cognito User Pool through OAuth 2.0 and OpenID Connect (OIDC).

This configuration supports **Confidential Clients**, which use both Client ID and Client Secret for secure backend authentication.

## Overview

Collate supports Single Sign-On (SSO) integration with various identity providers, enabling secure, centralized user authentication.

1. Navigate to **Settings** > **SSO**.

   <img src="https://mintcdn.com/collatedocs/-DMyLKbnTY6RpJyT/public/images/deployment/security/google/sso1.png?fit=max&auto=format&n=-DMyLKbnTY6RpJyT&q=85&s=ffcbc0c14e8f1c912b978e6b0a6f3692" alt="SSO Authentication" width="1438" height="672" data-path="public/images/deployment/security/google/sso1.png" />

2. Select the service provider.

   <img src="https://mintcdn.com/collatedocs/-DMyLKbnTY6RpJyT/public/images/deployment/security/google/sso2.png?fit=max&auto=format&n=-DMyLKbnTY6RpJyT&q=85&s=a534cdd6107cf831390060ed68d467f2" alt="Supported Providers" width="1438" height="679" data-path="public/images/deployment/security/google/sso2.png" />

3. Click **Configure** to set up Single Sign-On (SSO). See [Confidential Configuration Fields](#confidential-configuration-fields).

   <img src="https://mintcdn.com/collatedocs/cOe_QuHYxAbkMtTI/public/images/deployment/security/amazon-cognito-sso/cognito2.png?fit=max&auto=format&n=cOe_QuHYxAbkMtTI&q=85&s=8c52084fad232b1ee5ae6e545055e17a" alt="AWS Cognito SSO Configuration - Confidential Client" width="1438" height="672" data-path="public/images/deployment/security/amazon-cognito-sso/cognito2.png" />

4. Click **Save** to finish the SSO configuration.

## Confidential Configuration Fields

This section lists all fields in the order they appear in the Collate SSO configuration form.

### Authentication Configuration

Configure the identity provider connection and basic authentication behavior.

#### Provider Name

* **Definition**: A human-readable name for this AWS Cognito SSO configuration instance.
* **Example**: `AWS Cognito SSO`, `Company Cognito`, `User Pool Authentication`
* **Why it matters**: Helps identify this specific SSO configuration in logs and user interfaces.
* **Note**: This is a display name and doesn't affect authentication functionality.

#### Client Type

* **Definition**: Defines whether the application is public (no client secret) or confidential (requires client secret).
* **Options**: Public | Confidential
* **Example**: Confidential
* **Why it matters**: Determines security level and authentication flow. Confidential clients can securely store secrets.
* **Note**:
  * Use `Confidential` for backend services and web applications.
  * Use `Public` for SPAs and mobile apps.

#### Enable Self Signup

* **Definition**: Allows users to automatically create Collate accounts on their first SSO login.
* **Options**: Enabled | Disabled
* **Example**: Enabled
* **Why it matters**: Controls whether new users join automatically or need manual provisioning.
* **Note**: Must also be enabled in your Cognito User Pool settings.

#### Authority

* **Definition**: AWS Cognito User Pool domain that issues tokens.
* **Example**: `https://cognito-idp.us-east-1.amazonaws.com/us-east-1_ABC123DEF`
* **Why it matters**: Tells Collate which Cognito User Pool to authenticate against.
* **Note**: Format: `https://cognito-idp.{region}.amazonaws.com/{user-pool-id}`.

### OIDC Configuration

Configure the OIDC client credentials and token handling; these fields appear when **Client Type** is set to **Confidential**.

#### OIDC Client ID

* **Definition**: App client ID from your AWS Cognito User Pool.
* **Example**: `1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p`
* **Why it matters**: Identifies your application to AWS Cognito in OIDC flows.
* **Note**: Found in **AWS Console → Cognito → User Pools → App integration → App clients**.

#### OIDC Client Secret

* **Definition**: App client secret for confidential client authentication with AWS Cognito.
* **Example**: `a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0`
* **Why it matters**: Required for confidential clients to securely authenticate with Cognito.
* **Note**:
  * Generate in **Cognito → User Pool → App client → Generate client secret**.
  * Store securely and rotate regularly.

#### OIDC Request Scopes

* **Definition**: Permissions requested from AWS Cognito during authentication.
* **Default**: `openid email profile`
* **Example**: `openid email profile aws.cognito.signin.user.admin`
* **Why it matters**: Determines what user information Collate can access.
* **Note**: Must be configured in your Cognito User Pool app client settings.

#### OIDC Discovery URI

* **Definition**: AWS Cognito's OpenID Connect metadata endpoint.
* **Example**: `https://cognito-idp.us-east-1.amazonaws.com/us-east-1_ABC123DEF/.well-known/openid-configuration`
* **Why it matters**: Allows Collate to automatically discover Cognito's OIDC endpoints.
* **Note**: Replace `{region}` and `{user-pool-id}` with your actual values.

#### OIDC Callback URL

* **Definition**: URL where AWS Cognito redirects after authentication.
* **Example**: `https://openmetadata.company.com/callback`
* **Why it matters**: Must be registered in your AWS Cognito configuration.
* **Note**:
  * **This field is read-only** — it is auto-populated as `{your-domain}/callback`.
  * Copy this URL and add it to Cognito's allowed redirect URIs list.

#### OIDC Prompt

* **Definition**: Controls AWS Cognito's authentication prompt behavior.
* **Options**: `none`, `login`, `consent`, `select_account`
* **Example**: `login`
* **Why it matters**: Defines how the login experience behaves for users.
* **Note**:
  * `login`: Always prompt for credentials.
  * `none`: Use existing session silently (SSO).

#### OIDC Custom Parameters

* **Definition**: Additional parameters to include in OIDC authentication requests.
* **Example**: `{"prompt": "login", "response_type": "code"}`
* **Why it matters**: Allows customization of AWS Cognito authentication behavior.

#### Advanced Configuration

The following fields are grouped under **Advanced Config** in the UI (collapsed by default):

##### OIDC Use Nonce

* **Definition**: Security feature to prevent replay attacks in OIDC flows.
* **Default**: `false`
* **Why it matters**: Enhances security by ensuring each authentication request is unique.

##### OIDC Disable PKCE

* **Definition**: Whether to disable Proof Key for Code Exchange.
* **Default**: `false`
* **Why it matters**: PKCE adds security to the authorization code flow.
* **Note**: Should remain `false` (enabled) in most cases.

##### OIDC Max Clock Skew

* **Definition**: Maximum allowed time difference in seconds between systems when validating tokens.
* **Example**: `0`
* **Why it matters**: Prevents token validation failures due to minor clock differences between servers.

##### OIDC Token Validity

* **Definition**: Duration in seconds that tokens remain valid.
* **Default**: `3600`
* **Example**: `3600`
* **Why it matters**: Balances token lifetime against security requirements.

##### OIDC Max Age

* **Definition**: Maximum authentication age in seconds before re-authentication is required.
* **Example**: `3600`
* **Why it matters**: Controls how frequently users must re-authenticate.

##### OIDC Session Expiry

* **Definition**: How long user sessions remain valid in seconds.
* **Default**: `604800` (7 days)
* **Why it matters**: Controls session timeout for confidential clients.

### JWT Claims

Map identity token claims to Collate user identities and team assignments.

#### JWT Principal Claims

* **Definition**: JWT fields used to identify users in Collate. The first claim that returns a value is used.
* **Default**: `["email", "cognito:username", "sub"]`
* **Example**: `["cognito:username", "email", "sub"]`
* **Why it matters**: Determines how users are matched to their Collate accounts.
* **Note**:
  * At least one claim must correspond to the user's **email address**.
  * Common Cognito claims: `cognito:username`, `email`, `sub`, `preferred_username`.
  * Order matters — the first matching claim is used.

<Warning>
  **Important**: Incorrect claims will lock out all users including admins. The default values (`email`, `cognito:username`, `sub`) work for most Cognito configurations. Only change if you have custom claim requirements.
</Warning>

#### JWT Principal Claims Mapping

**Definition**: Maps JSON Web Token (JWT) claims to Collate user profile fields.

**Supported keys**: Only `email` and `username` are valid mapping targets in `jwtPrincipalClaimsMapping`.

**Example**:

```yaml theme={null}
["email:email", "username:preferred_username"]
```

**Why it matters**: Controls how SSO login data maps to user profiles in Collate.

**Format**: `collate_field:jwt_claim` (for example, `"email:email"`).

<Note>
  **Note**: The display name is derived automatically from standard OIDC/JWT claims — you don't need to configure it using `jwtPrincipalClaimsMapping`. If you need richer name handling, make sure your Cognito User Pool is configured to include `given_name` and `family_name` as standard attributes — Collate will pick them up automatically.
</Note>

<Warning>
  **Important**: Using any other key (for example, `name` or `firstName`) will cause the service to fail on startup with a validation error. JWT Principal Claims Mapping is **rarely needed** — the default JWT Principal Claims handle user identification correctly for most AWS Cognito configurations.
</Warning>

#### JWT Team Claim Mapping

* **Definition**: AWS Cognito claim containing team or department information for automatic team assignment in Collate.
* **Example**: `custom:department`, `cognito:groups`
* **Why it matters**: Automatically assigns users to existing Collate teams based on their Cognito attributes at login.
* **Note**:
  * Custom attributes must be prefixed with `custom:` (for example, `custom:department`).
  * For group-based teams, use `cognito:groups` (requires user pool groups configured).
  * The team must already exist in Collate for assignment to work.
  * Only teams of type **Group** can be auto-assigned. Team names are case-sensitive.

### Authorizer Configuration

Control which users and domains are permitted to access Collate.

#### Admin Principals

* **Definition**: Users granted admin access in Collate.
* **Example**: `["admin", "superuser"]`
* **Why it matters**: Grants full admin privileges in Collate.
* **Note**: Enter **usernames only — not email addresses**. Use the part of the email before `@` (for example, for `admin@company.com`, enter `admin`).

#### Principal Domain

* **Definition**: Default domain for user principals.
* **Example**: `company.com`
* **Why it matters**: Used to construct full user identifiers when only a username is provided.

#### Enforce Principal Domain

* **Definition**: Restricts login to users belonging to the configured Principal Domain.
* **Default**: `false`
* **Example**: `true`
* **Why it matters**: Adds an extra layer of security by limiting access to a specific domain.

#### Enable Secure Socket Connection

* **Definition**: Enables SSL/TLS for all SSO communication.
* **Default**: `false`
* **Example**: `true`
* **Why it matters**: Ensures encrypted communication between Collate and AWS Cognito.
* **Note**: Recommended in production environments.

#### Allowed Domains

* **Definition**: List of email domains permitted to authenticate with Collate.
* **Example**: `["company.com", "partner.com"]`
* **Why it matters**: Provides fine-grained control over which email domains can log in via AWS Cognito.
* **Note**:
  * Works in conjunction with **Enforce Principal Domain**.
  * Leave empty if you only use a single domain configured in **Principal Domain**.

#### Use Roles From Provider

* **Definition**: Use roles returned by AWS Cognito in the token to assign Collate roles.
* **Default**: `false`
* **Why it matters**: Enables role-based access control driven by your Cognito group assignments.
* **Note**: Roles must be included in the Cognito token and must match existing Collate role names.

#### Default OAuth Role

* **Definition**: Default role assigned to new users when they first sign in via SSO self-signup.
* **Example**: `DataConsumer`
* **Why it matters**: Controls the starting permission level for new users who join through self-signup.
* **Note**: Leave empty to create users without any role. Requires **Enable Self Signup** to be active. The role must already exist in Collate.

### Summary

Quick reference of all configuration fields and their example values.

| Field                           | Example / Default                                                                                                                                                                                     |
| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Provider Name                   | AWS Cognito SSO                                                                                                                                                                                       |
| Client Type                     | Confidential                                                                                                                                                                                          |
| Enable Self Signup              | Enabled                                                                                                                                                                                               |
| Authority                       | [https://cognito-idp.us-east-1.amazonaws.com/us-east-1\_ABC123DEF](https://cognito-idp.us-east-1.amazonaws.com/us-east-1_ABC123DEF)                                                                   |
| OIDC Client ID                  | 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p                                                                                                                                                                      |
| OIDC Client Secret              | a1b2c3... (confidential only)                                                                                                                                                                         |
| OIDC Request Scopes             | openid email profile                                                                                                                                                                                  |
| OIDC Discovery URI              | [https://cognito-idp.us-east-1.amazonaws.com/us-east-1\_ABC123DEF/.well-known/openid-configuration](https://cognito-idp.us-east-1.amazonaws.com/us-east-1_ABC123DEF/.well-known/openid-configuration) |
| OIDC Callback URL               | [https://openmetadata.company.com/callback](https://openmetadata.company.com/callback) (read-only)                                                                                                    |
| OIDC Prompt                     | login                                                                                                                                                                                                 |
| OIDC Custom Parameters          | `{"prompt": "login"}`                                                                                                                                                                                 |
| OIDC Use Nonce                  | false                                                                                                                                                                                                 |
| OIDC Disable PKCE               | false                                                                                                                                                                                                 |
| OIDC Max Clock Skew             | 0                                                                                                                                                                                                     |
| OIDC Token Validity             | 3600                                                                                                                                                                                                  |
| OIDC Max Age                    | 3600                                                                                                                                                                                                  |
| OIDC Session Expiry             | 604800                                                                                                                                                                                                |
| JWT Principal Claims            | `["email", "cognito:username", "sub"]`                                                                                                                                                                |
| JWT Principal Claims Mapping    | `["email:email"]`                                                                                                                                                                                     |
| JWT Team Claim Mapping          | custom:department                                                                                                                                                                                     |
| Admin Principals                | `["admin", "superuser"]`                                                                                                                                                                              |
| Principal Domain                | company.com                                                                                                                                                                                           |
| Enforce Principal Domain        | false                                                                                                                                                                                                 |
| Enable Secure Socket Connection | true                                                                                                                                                                                                  |
| Allowed Domains                 | `["company.com"]`                                                                                                                                                                                     |
| Use Roles From Provider         | false                                                                                                                                                                                                 |
| Default OAuth Role              | DataConsumer                                                                                                                                                                                          |

### Troubleshooting

If users are automatically logged out and unable to log in again due to a bad authentication configuration, you can reset the security setup using the following command:

```

./bootstrap/openmetadata-ops.sh remove-security-config --force

```

After executing the command, **restart the server**. The authentication values from your YAML or Helm chart will then be reapplied on startup. The following tiles detail how to apply this configuration:

<CardGroup cols={2}>
  <Card title="Docker Security" href="/deployment/docker/security">
    Configure Auth0 SSO to access the UI and APIs.
  </Card>

  <Card title="Bare Metal Security" href="/deployment/bare-metal/security">
    Configure Azure SSO to access the UI and APIs.
  </Card>

  <Card title="Kubernetes Security" href="/deployment/kubernetes/security">
    Configure a custom OIDC SSO to access the UI and APIs.
  </Card>

  <Card title="Google SSO" href="/how-to-guides/sso/google">
    Configure Google SSO to access the UI and APIs.
  </Card>

  <Card title="Okta SSO" href="/how-to-guides/sso/okta">
    Configure Okta SSO to access the UI and APIs.
  </Card>

  <Card title="Amazon Cognito SSO" href="/how-to-guides/sso/amazon-cognito">
    Configure Amazon Cognito SSO to access the UI and APIs.
  </Card>

  <Card title="SAML" href="/how-to-guides/sso/saml">
    Configure SAML SSO to access the UI and APIs.
  </Card>

  <Card title="LDAP" href="/how-to-guides/sso/ldap">
    Configure LDAP SSO to access the UI and APIs.
  </Card>
</CardGroup>
