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

Amplify集成Cognito自定义OpenID提供商重定向异常求助

解决Amplify集成自定义OpenID提供商时跳转URL出现undefined的问题

我之前也碰到过一模一样的情况!核心原因就是Amplify的Auth配置里缺少了自定义OpenID提供商的授权端点信息,导致它无法正确拼接跳转路径,才会出现https://undefined/oAuth/...这种错误URL。下面是一步步的解决方法:

1. 先确认Cognito端的自定义OpenID提供商配置正确

首先要确保你在Cognito用户池里创建的自定义OpenID提供商已经填好了所有必要的端点:

  • 授权端点(Authorization endpoint):就是你提到的https://openidsignin.com/oauth/authorize
  • 令牌端点(Token endpoint)
  • 用户信息端点(User info endpoint)
    同时检查提供商的客户端ID、客户端密钥是否和你的OpenID服务端配置一致。

2. 为Amplify补充自定义提供商的配置细节

在你的前端代码里,调用Auth.configure()时,必须在oauth.providers里明确指定自定义提供商的信息,示例代码如下:

import { Auth } from 'aws-amplify';

Auth.configure({
  Auth: {
    region: '你的Cognito区域(比如us-east-1)',
    userPoolId: '你的用户池ID(比如us-east-1_XXXXXXXXX)',
    userPoolWebClientId: '你的应用客户端ID',
    oauth: {
      domain: '你的Cognito用户池域名(比如xxx.auth.us-east-1.amazoncognito.com)',
      scope: ['openid', 'email', 'profile'], // 对应你在Cognito里配置的OAuth scope
      redirectSignIn: '你的前端登录回调URL(比如https://your-app.com/callback)',
      redirectSignOut: '你的前端退出回调URL(比如https://your-app.com/signout)',
      responseType: 'code', // 根据你的OpenID提供商要求选择,一般是code或token
      // 关键配置:添加自定义OpenID提供商的端点信息
      providers: {
        'MyCustomOpenID': { // 这个名称必须和你在Cognito里创建的提供商名称完全一致(大小写敏感)
          authorizationEndpoint: 'https://openidsignin.com/oauth/authorize',
          // 如果需要,还可以添加tokenEndpoint、userInfoEndpoint等其他端点
        }
      }
    }
  }
});

3. 触发登录时明确指定自定义提供商

调用登录方法时,一定要指定你配置的提供商名称,不能用默认的登录流程:

// 点击登录按钮时触发
const handleCustomLogin = async () => {
  try {
    await Auth.federatedSignIn({ provider: 'MyCustomOpenID' }); // 名称要和上面配置的完全一致
  } catch (error) {
    console.error('登录失败:', error);
  }
};

4. 检查Cognito应用客户端的OAuth设置

最后再确认Cognito应用客户端的配置:

  • 在“应用客户端设置”里,确保已经勾选了你创建的自定义OpenID提供商作为身份提供商
  • 确认OAuth流(比如Authorization Code Grant)和你在Amplify里设置的responseType匹配
  • 回调URL和退出URL要和Amplify配置里的redirectSignIn、redirectSignOut完全一致

常见坑提醒

  • 提供商名称必须完全匹配:Cognito里的提供商名称和Amplify配置里的providers键名要一模一样,大小写都不能错
  • 授权端点要完整:必须包含完整的HTTPS路径,比如https://openidsignin.com/oauth/authorize,不能只填域名
  • Cognito用户池域名要正确:如果用了自定义域名,一定要填自定义域名,而不是默认的Cognito域名

按照这些步骤配置后,Amplify就能正确跳转到你的自定义OpenID提供商登录页面了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 11:02:49