要解决“Active Directory Federation Service response_mode=form_post 正在尝试向 React 应用程序进行提交”的问题,您可以按照以下步骤进行操作:
import React from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom';
// 定义用于接收表单提交的组件
const FormPostEndpoint = () => {
// 在这里处理来自 ADFS 的表单提交
// 您可以访问和处理表单数据,然后根据需要进行重定向或其他操作
return (
接收到表单提交
);
};
const App = () => {
return (
{/* 其他路由和组件 */}
);
};
export default App;
response_mode
设置为 form_post
,并将 post_logout_redirect_uri
设置为 React 应用程序中的表单提交端点的 URL。以下是 ADFS 配置的示例代码:Set-AdfsRelyingPartyTrust -TargetName "Your Relying Party Trust Name" -ClaimsProviderName "Your Claims Provider Name" -PostLogoutRedirectUri "https://your-react-app.com/form-post-endpoint" -ResponseMode FormPost
请确保将 "Your Relying Party Trust Name"
替换为您的 Relying Party Trust 的名称,并将 "Your Claims Provider Name"
替换为您的 Claims Provider 的名称。同时,将 "https://your-react-app.com/form-post-endpoint"
替换为您 React 应用程序的实际表单提交端点的 URL。
response_mode
。您可以使用 react-adal
或其他适合您项目的身份验证库来处理 ADFS 登录。以下是使用 react-adal
的示例代码:import React, { useEffect } from 'react';
import { runWithAdal } from 'react-adal';
import { AuthenticationContext } from 'react-adal';
// ADFS 配置
const adalConfig = {
tenant: 'your-tenant-id',
clientId: 'your-client-id',
redirectUri: 'http://localhost:3000',
endpoints: {
api: 'https://your-api.com',
},
postLogoutRedirectUri: 'https://your-react-app.com/form-post-endpoint', // 这里与 ADFS 配置中的 post_logout_redirect_uri 保持一致
cacheLocation: 'localStorage',
};
// 创建 AuthenticationContext
const authContext = new AuthenticationContext(adalConfig);
// 在应用程序根组件中初始化 ADFS 登录
const App = () => {
useEffect(() => {
authContext.handleWindowCallback();
}, []);
return (
{/* 应用程序内容 */}
);
};
runWithAdal(authContext, () => {
// 渲染根组件
ReactDOM.render( , document.getElementById('root'));
});
请将 "your-tenant-id"
替换为您的 ADFS 租户 ID,将 "your-client-id"
替换为您的应用程序的客户端 ID,并将 "https://your-react-app.com/form-post-endpoint"
替换为您 React 应用程序的实际表单提交端点的 URL。
通过完成上述步骤,您的 React 应用程序将能够接收来自 ADFS 的表单提交,并对其进行处理。
上一篇:Active Directory AD B2C Android原生MSAL无法与AD连接。
下一篇:Active Directory Federation Services 支持 OpenID Connect 的 claims provider 吗?