我可以使用自己的 aws cognito 登录表单吗?

Nah*_*thi 5 javascript amazon-web-services reactjs amazon-cognito next.js

我有一个使用 aws cognito 进行身份验证的 nextjs 应用程序。我想知道是否有办法用我自己的自定义表单替换 aws 提供的托管 ui。

import { Domain } from "@material-ui/icons";
import NextAuth from "next-auth";
import Providers from "next-auth/providers";

export default NextAuth({
    providers:[
        Providers.Cognito({
            clientId:process.env.COGNITO_CLIENT,
            clientSecret:process.env.COGNITO_CLIENT_SECRET,
            domain: process.env.COGNITO_DOMAIN
        })

        
    ]
})
Run Code Online (Sandbox Code Playgroud)

JFC*_*one 7

从技术上讲,是的,这是可能的,但@alexrogo 的答案具有误导性。Amplify 除了非常值得怀疑(只需查看 github 上的开放票证)之外,它并不使用 OpenIDConnect 标准。它正在执行直接 CognitoitiateAuth 操作,该操作返回没有 openid 范围的令牌。如果您尝试在 Cognito 上调用 /userinfo 端点,则会失败。此外,Amplify 将令牌保留在本地存储或 cookie 中,具体取决于您如何配置它,但它不是 httponly cookie...这非常麻烦。

但话虽这么说,可以替换 HostedUI,但要小心,因为 HostedUI 不仅仅是一个 UI!这是一个完整的授权服务器。如果您想省略其登录页面,您必须自己实现这些功能。请参阅此处了解更多详细信息:不使用托管 UI 的 AWS Cognito 授权代码授予流程


ale*_*ogo 0

是的,这是可能的。

您可以将自己的 UI 组件连接到 Cogntio 的 API。您可以将身份验证令牌存储在状态或本地存储中。看看这个文档

在那里你会找到所有必要的功能,包括注册、登录、注销、更改用户属性、刷新令牌。