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

# Amazon Cognito SSO | OpenMetadata Authentication Setup

> Enable Amazon Cognito for managing user authentication, token issuance, and identity pools in distributed or serverless systems.

# Amazon Cognito SSO

Follow the sections in this guide to set up Amazon Cognito SSO.

<Tip>
  Security requirements for your **production** environment:

  * **DELETE** the admin default account shipped by OM in case you had [Basic Authentication](/v1.12.x/deployment/security/basic-auth)
    enabled before configuring the authentication with Amazon Cognito SSO.
  * **UPDATE** the Private / Public keys used for the [JWT Tokens](/v1.12.x/deployment/security/enable-jwt-tokens) in case it is
    enabled.
</Tip>

## Create Server Credentials

### Step 1: Login to AWS Portal

* Login to [Amazon AWS Portal](https://aws.amazon.com/).
* Search for `Cognito` in the search box and select Cognito Service from the dropdown menu.

<img src="https://mintcdn.com/openmetadata/BD_VpubLZxqEpcO8/public/images/deployment/security/amazon-cognito-sso/create-server-credentials-1.png?fit=max&auto=format&n=BD_VpubLZxqEpcO8&q=85&s=a5f38f3670e79f5a103e21f78803d30a" alt="create-account" width="2216" height="826" data-path="public/images/deployment/security/amazon-cognito-sso/create-server-credentials-1.png" />

### Step 2: Setup User Pool

* Click on the "Create user pool" button if you do not have any user pools configured yet. Skip this step if you already have a user pool available.
* Select the type of ID providers you want to configure for your users and click "Next"

<img src="https://mintcdn.com/openmetadata/BD_VpubLZxqEpcO8/public/images/deployment/security/amazon-cognito-sso/create-server-credentials-2.png?fit=max&auto=format&n=BD_VpubLZxqEpcO8&q=85&s=1b22bb7a4daf80fd046ca4fa2f3ed878" alt="create-account" width="1630" height="1376" data-path="public/images/deployment/security/amazon-cognito-sso/create-server-credentials-2.png" />

* Configure the security requirements in Step 2 as per your organizational needs and proceed to Step 3
* Configure the Sign-up experience in Step 3. Make sure to add email as a required attribute before proceeding to step 4

<img src="https://mintcdn.com/openmetadata/BD_VpubLZxqEpcO8/public/images/deployment/security/amazon-cognito-sso/create-server-credentials-3.png?fit=max&auto=format&n=BD_VpubLZxqEpcO8&q=85&s=88e7002fc0a77c102a56303cfe676af0" alt="create-account" width="1636" height="774" data-path="public/images/deployment/security/amazon-cognito-sso/create-server-credentials-3.png" />

* Configure message delivery as per your organizational needs and proceed to Step 5
* In Step 5, add a name for the user pool and check the "Use the Cognito Hosted UI" option and provide a Cognito domain as shown in the screenshot below

<img src="https://mintcdn.com/openmetadata/BD_VpubLZxqEpcO8/public/images/deployment/security/amazon-cognito-sso/create-server-credentials-4.png?fit=max&auto=format&n=BD_VpubLZxqEpcO8&q=85&s=9607a4370023df2c21b66033310cff67" alt="create-account" width="1624" height="1282" data-path="public/images/deployment/security/amazon-cognito-sso/create-server-credentials-4.png" />

* In the same step, select "Public client" for the Initial App client type and configure the Allowed callback URLs
  with `http://localhost:8585/callback` as shown in the screenshot below. Note: For production deployments, the Allowed
  callback URLs should be updated with the appropriate domain name.

<img src="https://mintcdn.com/openmetadata/BD_VpubLZxqEpcO8/public/images/deployment/security/amazon-cognito-sso/create-server-credentials-5.png?fit=max&auto=format&n=BD_VpubLZxqEpcO8&q=85&s=cefe7cedb59bc3afccde330e610b5abe" alt="create-account" width="1464" height="1584" data-path="public/images/deployment/security/amazon-cognito-sso/create-server-credentials-5.png" />

* The last step is to Review and create the User Pool.

### Step 3: Where to find the Credentials

* The `User Pool ID` can be found in the User Pool summary page as seen in the screenshot below

<img src="https://mintcdn.com/openmetadata/BD_VpubLZxqEpcO8/public/images/deployment/security/amazon-cognito-sso/create-server-credentials-6.png?fit=max&auto=format&n=BD_VpubLZxqEpcO8&q=85&s=705f09cc3dcbc72b58fbdec720b6979a" alt="create-account" width="922" height="706" data-path="public/images/deployment/security/amazon-cognito-sso/create-server-credentials-6.png" />

* The App client ID can be found under the "App Integration" tab of the User Pool page. There will be a section that
  lists all the App clients with client name and client ID as shown below

<img src="https://mintcdn.com/openmetadata/BD_VpubLZxqEpcO8/public/images/deployment/security/amazon-cognito-sso/create-server-credentials-7.png?fit=max&auto=format&n=BD_VpubLZxqEpcO8&q=85&s=c1a621d75f56476bde4544cc108ae5bd" alt="create-account" width="1960" height="154" data-path="public/images/deployment/security/amazon-cognito-sso/create-server-credentials-7.png" />

<img src="https://mintcdn.com/openmetadata/BD_VpubLZxqEpcO8/public/images/deployment/security/amazon-cognito-sso/create-server-credentials-8.png?fit=max&auto=format&n=BD_VpubLZxqEpcO8&q=85&s=5c5f74434623e85f82a5a16ad1a0fee7" alt="create-account" width="2098" height="664" data-path="public/images/deployment/security/amazon-cognito-sso/create-server-credentials-8.png" />

After the applying these steps, you can update the configuration of your deployment:

<CardGroup cols={3}>
  <Card title="Docker" href="/v1.12.x/deployment/security/amazon-cognito-sso/docker">
    Configure Amazon Cognito SSO for Docker deployment.
  </Card>

  <Card title="Kubernetes" href="/v1.12.x/deployment/security/amazon-cognito-sso/kubernetes">
    Configure Amazon Cognito SSO for Kubernetes deployment.
  </Card>

  <Card title="Bare Metal" href="/v1.12.x/deployment/security/amazon-cognito-sso/bare-metal">
    Configure Amazon Cognito SSO for Bare Metal deployment.
  </Card>
</CardGroup>

## Configure Ingestion

Once your server security is set, it's time to review the ingestion configuration. Our bots support JWT tokens
to authenticate to the server when sending requests.

Find more information on [**Enabling JWT Tokens**](/deployment/security/enable-jwt-tokens) and [**JWT Troubleshooting**](/deployment/security/jwt-troubleshooting) to ensure seamless authentication.
