在外部门户中将 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。
- 我要补充一点,这个应用程序的服务器将不在
客户端的域控制器。
- 我不认为我们愿意强制使用任何特定的浏览器,例如 IE。
- 我还要补充一点,客户非常注重安全,他们本应如此,获得 technical/configuration 支持可能非常困难。
- 外部用户必须有一个单独的身份验证过程,
因为他们在组织内没有 Window 的帐户。
另一个复杂的问题是,我们已经在 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 会话中设置会话超时。
我们正处于为拥有许多子公司的大型组织开发门户应用程序的最后阶段,该应用程序内置于 ASP.NET MVC 中。该门户将由内部(即组织的员工)和外部用户使用。该门户网站还有一个配套的信息 CMS,正在使用 Drupal 开发。
由于 Drupal CMS 和 MVC 应用程序 运行 在同一个域中,我已经能够使用 Drupal 的 Web 服务模块在两个站点之间共享身份验证。
这是让我难过的最新请求...
营销人员现在要求,当公司员工登录 Windows 时,他们也会登录门户 (MVC) 和 Drupal CMS。
- 我要补充一点,这个应用程序的服务器将不在 客户端的域控制器。
- 我不认为我们愿意强制使用任何特定的浏览器,例如 IE。
- 我还要补充一点,客户非常注重安全,他们本应如此,获得 technical/configuration 支持可能非常困难。
- 外部用户必须有一个单独的身份验证过程, 因为他们在组织内没有 Window 的帐户。
另一个复杂的问题是,我们已经在 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 会话中设置会话超时。