You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Amplify部署NextJS应用遇Next-AUTH UNTRUST_HOST_ERROR求助

解决NextAuth在AWS Amplify上的UNTRUST_HOST_ERROR错误

核心原因

UNTRUST_HOST_ERROR是NextAuth的安全限制机制,仅允许预定义的可信主机处理认证请求,你的Amplify域名未被识别为可信主机。以下是针对性修复步骤:


1. 确保NEXTAUTH_URL环境变量配置正确

  • 在AWS Amplify控制台的环境变量页面,添加NEXTAUTH_URL,值为你的完整应用URL:https://master.dtzbr8sfj0q7k.amplifyapp.com/
  • 注意:不要在Build Settings的build命令里手动赋值(当前写法仅在构建shell中生效,运行时无法被NextJS读取),必须通过Amplify控制台配置环境变量,NextJS会自动注入到process.env中。

2. 配置NextAuth信任主机

在/pages/api/[...nextauth].js中,给NextAuth添加信任主机配置:

export default NextAuth({
  providers: [/* 你的Cognito配置 */],
  secret: process.env.JWT_SECRET,
  // 添加以下配置二选一即可
  trustHost: true, // 允许所有主机(适合Amplify这类托管平台)
  // 或者更严格的指定方式:
  // allowedHosts: ["master.dtzbr8sfj0q7k.amplifyapp.com"],
  callbacks: { /* 你的回调函数 */ }
});

3. 修正Cognito Provider的issuer配置

你的Cognito Provider的issuer参数配置错误,必须使用Cognito用户池的OIDC issuer URL,格式为:https://cognito-idp.{你的区域}.amazonaws.com/{你的用户池ID}

  • 该地址可在Cognito控制台的用户池「App integration」→「Domain name」页面获取。

修正后的Provider配置:

CognitoProvider({
  clientId: process.env.COGNITO_CLIENT_ID,
  clientSecret: process.env.COGNITO_CLIENT_SECRET,
  issuer: process.env.COGNITO_ISSUER_URL, // 改用正确的issuer URL
}),

同时在Amplify环境变量中添加COGNITO_ISSUER_URL并填入对应值。

4. 验证Cognito回调URL的完整性

确保Cognito用户池的「App client settings」里的回调URL包含完整的NextAuth回调路径:
https://master.dtzbr8sfj0q7k.amplifyapp.com/api/auth/callback/cognito
不要只填写根域名,必须包含完整的回调路径。

5. 修复Build Settings的无效配置

删除Build Settings中build阶段的环境变量赋值语句,这些语句无法将变量注入NextJS运行环境:

version: 1
applications:
  - frontend:
      phases:
        preBuild:
          commands:
            - npm ci
        build:
          commands:
            - npm run build # 仅保留build命令,环境变量通过Amplify控制台配置
      artifacts:
        baseDirectory: .next
        files:
          - '**/*'
      cache:
        paths:
          - node_modules/**/*
    appRoot: client

6. 修正登录按钮的代码错误

你的index.js中登录按钮的点击事件存在未定义的e变量,会导致登录失败:

onClick={(e) => {
  e.preventDefault();
  signIn("cognito", {
    callbackUrl: process.env.NEXTAUTH_URL,
  });
}}

完成以上步骤后重新部署应用,UNTRUST_HOST_ERROR即可解决。

内容的提问来源于stack exchange,提问作者Arihant Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:05:20