在外部门户中将 Windows 身份验证与 ASP.NET 和 Drupal 集成

Integrating Windows Authentication with ASP.NET and Drupal In External Portal

我们正处于为拥有许多子公司的大型组织开发门户应用程序的最后阶段,该应用程序内置于 ASP.NET MVC 中。该门户将由内部(即组织的员工)和外部用户使用。该门户网站还有一个配套的信息 CMS,正在使用 Drupal 开发。

由于 Drupal CMS 和 MVC 应用程序 运行 在同一个域中,我已经能够使用 Drupal 的 Web 服务模块在两个站点之间共享身份验证。

这是让我难过的最新请求...

营销人员现在要求,当公司员工登录 Windows 时,他们也会登录门户 (MVC) 和 Drupal CMS。

另一个复杂的问题是,我们已经在 ASP.NET Identity 之上构建了一个相当复杂的用户存储库,这意味着即使用户通过了外部身份验证,他们仍然需要在 MVC 中有一个相应的 Identity 帐户申请。

市场部 "a user logs into Windows, they're also logged into an external-facing, public MVC application and a Drupal CMS" 提出的这个要求是否可行?

提前致谢。

是的,这是可能的,但是这样做非常非常痛苦。这很复杂,我只能提供一个方向。

关键字是:WCF API 和 PHP soap。

您需要创建一个 API 并在用户登录 Windows 时调用一个函数。这个函数需要设置一个值,比如 "if_logedin" 为“1”,这意味着这个人确实登录了,然后将这个值插入到 drupal 数据库中(你需要先在 drupal 数据库中创建这样一个列)。插入部分,您需要 Web 服务器上的 PHP soap 与您的 ASP.net 通信,并使用 php 插入值 然后侵入 drupal php 会话,当值为1,用户保持登录状态。当用户注销 windows 时,您需要另一个函数为 "if_logedin==0" 做类似的事情。还需要考虑双工通信,所以对于httprequest这样的请求类型是严格的。

对于公司以外的其他"boys",除非他们每个人都有一个包含用户名和密码的本地数据库,否则这是不可能的。如果他们有,您的 Web 服务器也需要能够访问他们的数据库,这根本不安全。

对于其他安全问题,您可以在 drupal php 会话中设置会话超时。