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

Microsoft Entra ID(SAML)与AWS Amplify Authenticator组件集成问题排查

解决方案:AWS Amplify Authenticator 与 Microsoft Entra ID SAML 集成问题

一、让 Authenticator 组件显示 SAML 登录选项

1. 验证 amplify/auth/resource.ts 配置

确保自定义 SAML 提供商的配置完全正确,名称需与 Cognito 中显示的 MicrosoftEntraIDSAML 完全一致(大小写敏感):

import { defineAuth } from '@aws-amplify/backend';

export const auth = defineAuth({
  externalProviders: {
    custom: [
      {
        name: "MicrosoftEntraIDSAML",
        type: "SAML",
        metadata: {
          url: "https://login.microsoftonline.com/[你的租户ID]/federationmetadata/2007-06/federationmetadata.xml"
        }
      }
    ]
  },
  loginWith: {
    externalProviders: true, // 开启外部提供商登录开关
  }
});

配置完成后运行 amplify push 更新云端资源。

2. 显式指定 Authenticator 的 providers 属性

默认情况下,Authenticator 不会自动加载自定义 SAML 提供商,需在组件中显式声明:

import { Authenticator } from '@aws-amplify/ui-react';

export default function App() {
  return (
    <Authenticator providers={['MicrosoftEntraIDSAML']}>
      {/* 你的应用核心内容 */}
    </Authenticator>
  );
}

完成以上两步后,Authenticator 登录界面会自动显示对应的 SAML 登录按钮,无需自定义 Footer。


二、解决重定向后无法完成登录的问题

1. 检查回调 URL 双向配置

  • AWS Cognito 端:在用户池的「应用客户端」中,确认「回调 URL」「注销 URL」包含你的应用地址(如 http://localhost:3000 或生产环境域名),同时需包含 Cognito 的默认回调地址 https://[你的用户池域名]/oauth2/idpresponse。
  • Microsoft Entra ID 端:在企业应用的「回复 URL」中,添加上述 Cognito 的回调地址,确保与 Cognito 配置完全一致。

2. 处理重定向回调逻辑

在应用入口文件(如 App.tsx 或 main.tsx)中,必须调用 handleAuthRedirect 处理 SAML 提供商返回后的登录收尾:

import { Amplify, handleAuthRedirect } from 'aws-amplify';
import config from './amplifyconfiguration.json';

Amplify.configure(config);

// 优先处理重定向回调
handleAuthRedirect();

export default function App() {
  // 应用组件内容
}

若使用 React Router,可放在 useEffect 中确保组件挂载时执行:

import { useEffect } from 'react';
import { handleAuthRedirect } from 'aws-amplify';

function App() {
  useEffect(() => {
    handleAuthRedirect();
  }, []);

  // ...
}

3. 启用 Cognito 自动创建用户

在 Cognito 用户池的「身份提供商」中,编辑你的 SAML 提供商,勾选「启用自动创建用户」选项。这样用户首次通过 SAML 登录时,Cognito 会自动生成对应的用户条目。

4. 确认属性映射配置

在 SAML 提供商配置中,将 Microsoft Entra ID 的用户属性(如 email、name)映射到 Cognito 用户池的对应属性(如 email、given_name)。属性映射不匹配会导致用户创建失败或登录状态异常。


关键注意事项

  • 自定义提供商名称必须全局一致:resource.ts 中的 name、Cognito 中的提供商名称、Authenticator 的 providers 参数三者必须完全相同。
  • 回调 URL 不能有拼写错误:两端(Cognito 和 Entra ID)的 URL 必须完全匹配,包括协议(http/https)和端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:34:57