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

如何在next-auth v4中配置CognitoProvider传递identity_provider

Next-auth v4 集成AWS Cognito第三方登录(跳过默认UI)

问题背景

项目环境:

  • Next.js 14
  • AWS Cognito(已集成Google、Facebook登录,第三方登录需重定向至Cognito托管UI)
  • next-auth v4 管理用户会话

原旧版本next-auth中,通过CognitoProvider的authorize方法传递identity_provider参数,实现跳过Cognito默认UI直接进入对应第三方登录界面,但该写法在v4中失效,需适配v4的实现方式。

解决方案

方案1:调用signIn时直接传递identity_provider参数

直接在signIn的选项中添加identity_provider参数,next-auth会自动将该参数附加到Cognito的授权请求URL中:

import { signIn } from 'next-auth/react';

// Google登录
await signIn('cognito', {
  callbackUrl: '/your-callback-path',
  identity_provider: 'Google'
});

// Facebook登录
await signIn('cognito', {
  callbackUrl: '/your-callback-path',
  identity_provider: 'Facebook'
});

方案2:配置CognitoProvider的authorization参数

如果需要统一设置基础授权参数,可在CognitoProvider中配置authorization的params,再结合signIn传递动态参数:

import CognitoProvider from 'next-auth/providers/cognito';

CognitoProvider({
  clientId: process.env.CLIENT_ID,
  clientSecret: process.env.CLIENT_SECRET,
  issuer: process.env.ISSUER,
  authorization: {
    params: {
      scope: 'openid email profile', // 基础授权范围
    },
  },
});

调用signIn时传递的identity_provider会自动附加到上述配置的参数中,生成符合需求的Cognito授权URL。

方案3:自定义授权URL跳转(兜底方案)

若以上方法不符合需求,可直接构造Cognito的授权URL并跳转,后续由next-auth的回调处理会话:

const handleSocialLogin = (provider) => {
  const cognitoDomain = process.env.COGNITO_DOMAIN;
  const clientId = process.env.CLIENT_ID;
  const callbackUrl = encodeURIComponent(`${window.location.origin}/api/auth/callback/cognito`);
  const identityProvider = provider === 'google' ? 'Google' : 'Facebook';

  const authUrl = `${cognitoDomain}/oauth2/authorize?response_type=code&client_id=${clientId}&redirect_uri=${callbackUrl}&scope=openid email profile&identity_provider=${identityProvider}`;
  
  window.location.href = authUrl;
};

// 使用示例
handleSocialLogin('google');

说明

next-auth v4中,authorize方法的职责仅为验证用户凭证并返回用户信息,不再负责修改授权请求的参数。授权请求的参数需通过signIn选项或provider的authorization配置来传递,这是v4与旧版本的核心差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:11:08