Cognito
Get your Cognito Credentials
To integrate with Cognito, you need to set up a User Pool and an App client in the Amazon Cognito Console.
Follow these steps:
- Go to the Cognito Console and create a User Pool.
- Under App clients, create a new App client (note the Client ID and Client Secret if enabled).
- Go to Domain and set a Cognito Hosted UI domain (e.g.,
your-app.auth.us-east-1.amazoncognito.com). - In App client settings, enable:
- Allowed OAuth flows:
Authorization code grant - Allowed OAuth scopes:
openid,profile,email
- Allowed OAuth flows:
- Add your callback URL (e.g.,
http://localhost:3000/api/auth/callback/cognito).
- User Pool is required for Cognito authentication.
- Make sure the callback URL matches exactly what you configure in Cognito.
Configure the provider
Configure the cognito key in socialProviders key of your auth instance.
import { betterAuth } from "better-auth";
export const auth = betterAuth({
socialProviders: {
cognito: {
clientId: process.env.COGNITO_CLIENT_ID as string,
clientSecret: process.env.COGNITO_CLIENT_SECRET as string,
domain: process.env.COGNITO_DOMAIN as string, // e.g. "your-app.auth.us-east-1.amazoncognito.com"
region: process.env.COGNITO_REGION as string, // e.g. "us-east-1"
userPoolId: process.env.COGNITO_USERPOOL_ID as string,
},
},
})Sign In with Cognito
To sign in with Cognito, use the signIn.social function from the client.
import { createAuthClient } from "better-auth/client"
const authClient = createAuthClient()
const signIn = async () => {
const data = await authClient.signIn.social({
provider: "cognito"
})
}Additional Options:
scope: Additional OAuth2 scopes to request (combined with default permissions).- Default:
"openid" "profile" "email" - Common Cognito scopes:
openid: Required for OpenID Connect authenticationprofile: Access to basic profile infoemail: Access to user’s emailphone: Access to user’s phone numberaws.cognito.signin.user.admin: Grants access to Cognito-specific APIs
- Default:
- Note: You must configure the scopes in your Cognito App Client settings. available scopes
getUserInfo: Custom function to retrieve user information from the Cognito UserInfo endpoint.
For more information about Amazon Cognito's scopes and API capabilities, refer to the official documentation.