后端不使用Amplify时实现Cognito登录的AWS SDK库是什么?
不使用Amplify实现Cognito用户登录的AWS SDK方案
你不需要引入额外的AWS SDK库,直接使用你已经在使用的@aws-sdk/client-cognito-identity-provider包即可实现登录功能。
核心登录API说明
- 用户名密码登录场景:调用
InitiateAuth接口,传入AuthFlow参数为USER_PASSWORD_AUTH,同时传入ClientId、用户账号密码等参数即可完成登录认证,成功后会返回IdToken、AccessToken、RefreshToken等凭证。 - 验证码/自定义认证流场景:同样使用
InitiateAuth接口,根据你的Cognito用户池配置的认证流修改AuthFlow参数即可,支持的流包括CUSTOM_AUTH、USER_SRP_AUTH等。 - 二次验证场景:如果认证过程需要MFA校验等二次验证步骤,可以调用
RespondToAuthChallenge接口返回对应验证信息完成登录流程。
基础登录代码示例
import { CognitoIdentityProviderClient, InitiateAuthCommand } from "@aws-sdk/client-cognito-identity-provider"; // 初始化Cognito客户端 const client = new CognitoIdentityProviderClient({ region: "你的AWS区域" }); const login = async (username, password) => { const command = new InitiateAuthCommand({ AuthFlow: "USER_PASSWORD_AUTH", ClientId: "你的Cognito用户池客户端ID", AuthParameters: { USERNAME: username, PASSWORD: password } }); const response = await client.send(command); // 登录凭证存储在response.AuthenticationResult中 return response.AuthenticationResult; };
注意事项
- 提前在Cognito用户池的客户端配置中开启你要使用的认证流(比如USER_PASSWORD_AUTH),否则调用接口会报错。
- 后端场景调用时默认不需要配置客户端密钥,如果你在创建用户池客户端时勾选了生成客户端密钥,需要在请求的
AuthParameters中额外增加SECRET_HASH参数。
内容的提问来源于stack exchange,提问作者bevev63069
相关产品推荐
相关产品推荐

