Cognito

获取你的 Cognito 凭证

要与 Cognito 集成,你需要在 Amazon Cognito 控制台 中设置一个 用户池 和一个 应用客户端

按照以下步骤操作:

  1. 进入 Cognito 控制台 并创建一个 用户池
  2. 应用客户端 下,创建一个新的 应用客户端(如果启用,请记下客户端 ID 和客户端密钥)。
  3. 进入 并设置一个 Cognito 托管 UI 域(例如,your-app.auth.us-east-1.amazoncognito.com)。
  4. 应用客户端设置 中,启用:
    • 允许的 OAuth 流程:Authorization code grant
    • 允许的 OAuth 范围:openidprofileemail
  5. 添加回调 URL(例如,http://localhost:3000/api/auth/callback/cognito)。
  • 用户池是进行 Cognito 身份验证所必需的
  • 请确保回调 URL 与你在 Cognito 中配置的完全匹配。

配置提供者

在你的 auth 实例的 socialProviders 键中配置 cognito 键。

auth.ts
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, 
    },
  },
})

使用 Cognito 登录

要使用 Cognito 登录,请在客户端使用 signIn.social 函数。

auth-client.ts
import { createAuthClient } from "better-auth/client"

const authClient = createAuthClient()

const signIn = async () => {
  const data = await authClient.signIn.social({
    provider: "cognito"
  })
}

其他选项:

  • scope:要请求的额外 OAuth2 范围(与默认权限组合)。
    • 默认值:"openid" "profile" "email"
    • 常用的 Cognito 范围:
      • openid:OpenID Connect 认证所必需
      • profile:访问基本个人资料信息
      • email:访问用户的电子邮件
      • phone:访问用户的电话号码
      • aws.cognito.signin.user.admin:授予访问 Cognito 特定 API 的权限
  • 注意:你必须在 Cognito 应用客户端设置中配置这些范围。可用范围
  • getUserInfo:从 Cognito UserInfo 端点自定义获取用户信息的函数。

关于 Amazon Cognito 的范围和 API 功能的更多信息,请参阅官方文档

On this page