Cognito
获取你的 Cognito 凭证
要与 Cognito 集成,你需要在 Amazon Cognito 控制台 中设置一个 用户池 和一个 应用客户端。
按照以下步骤操作:
- 进入 Cognito 控制台 并创建一个 用户池。
- 在 应用客户端 下,创建一个新的 应用客户端(如果启用,请记下客户端 ID 和客户端密钥)。
- 进入 域 并设置一个 Cognito 托管 UI 域(例如,
your-app.auth.us-east-1.amazoncognito.com)。 - 在 应用客户端设置 中,启用:
- 允许的 OAuth 流程:
Authorization code grant - 允许的 OAuth 范围:
openid、profile、email
- 允许的 OAuth 流程:
- 添加回调 URL(例如,
http://localhost:3000/api/auth/callback/cognito)。
- 用户池是进行 Cognito 身份验证所必需的。
- 请确保回调 URL 与你在 Cognito 中配置的完全匹配。
配置提供者
在你的 auth 实例的 socialProviders 键中配置 cognito 键。
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 函数。
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 功能的更多信息,请参阅官方文档。