Skip to content

UserPoolIdentityProvider ​

The UserPoolIdentityProvider resource lets you manage AWS Cognito UserPool Identity Providers for authentication within your applications.

Minimal Example ​

Create a basic Cognito UserPool Identity Provider with required properties and one optional attribute mapping.

ts
import AWS from "alchemy/aws/control";

const identityProvider = await AWS.Cognito.UserPoolIdentityProvider("myIdentityProvider", {
  ProviderName: "myProvider",
  UserPoolId: "us-east-1_123456789",
  AttributeMapping: {
    email: "email",
    name: "name"
  },
  ProviderDetails: {
    authorizationEndpoint: "https://auth.example.com/oauth2/authorize",
    tokenEndpoint: "https://auth.example.com/oauth2/token",
    // Additional provider details as needed
  },
  ProviderType: "OAuth2"
});

Advanced Configuration ​

Configure the identity provider with additional details and identifiers for enhanced functionality.

ts
const advancedIdentityProvider = await AWS.Cognito.UserPoolIdentityProvider("advancedIdentityProvider", {
  ProviderName: "advancedProvider",
  UserPoolId: "us-east-1_987654321",
  AttributeMapping: {
    email: "email",
    username: "username"
  },
  ProviderDetails: {
    authorizationEndpoint: "https://advanced.auth.example.com/oauth2/authorize",
    tokenEndpoint: "https://advanced.auth.example.com/oauth2/token",
    // Additional provider details as needed
    scopes: "openid profile email"
  },
  ProviderType: "OAuth2",
  IdpIdentifiers: ["advancedProviderId"]
});

Using with Existing Identity Provider ​

Adopt an existing identity provider instead of creating a new one.

ts
const existingIdentityProvider = await AWS.Cognito.UserPoolIdentityProvider("existingIdentityProvider", {
  ProviderName: "existingProvider",
  UserPoolId: "us-east-1_existing",
  ProviderDetails: {
    authorizationEndpoint: "https://existing.auth.example.com/oauth2/authorize",
    tokenEndpoint: "https://existing.auth.example.com/oauth2/token",
  },
  ProviderType: "OAuth2",
  adopt: true
});

Custom Attribute Mapping ​

Create an identity provider with a custom attribute mapping for more flexible user data management.

ts
const customAttributeIdentityProvider = await AWS.Cognito.UserPoolIdentityProvider("customAttributeProvider", {
  ProviderName: "customAttributesProvider",
  UserPoolId: "us-east-1_custom",
  AttributeMapping: {
    email: "user_email",
    phoneNumber: "user_phone"
  },
  ProviderDetails: {
    authorizationEndpoint: "https://custom.auth.example.com/oauth2/authorize",
    tokenEndpoint: "https://custom.auth.example.com/oauth2/token",
  },
  ProviderType: "OAuth2"
});