我继承了传统的三层 Web 应用程序,其中 ASP.net 2.0 用于 UI,.Net Web 服务 (ASMX) 在中间层,SQL Server 2005 用于 DB。这是目前唯一的用户是公司员工的 Intranet 应用程序。当前,该应用程序使用 Active Directory (AD) 身份验证。
在登录屏幕上,用户会看到用户名/密码对话框。中间层对 AD 进行简单调用以检查用户名/密码。如果没问题,则生成一个 sessionId guid 并将其发送回 UI。然后,此 sessionId 会在会话内 UI 的每个后续调用中传递。在处理请求之前,中间层中的所有方法首先根据 SQL Server 中的简单会话表检查 sessionID 的有效性。
我现在需要使应用程序的 Web 服务中间层可用于公共 Internet 可用的新 UI。我不需要担心身份验证,因为这将由新 UI 管理。但是,我不想让 Web 服务在没有任何安全性的情况下完全打开。我只是想确保调用服务的系统有权这样做。我不想因为必须维护当前使用的 sessionId 而给新 UI 带来负担。
对从新 UI 调用时保护服务的最佳方式有何看法?我想我可以使用 x509 证书,但我之前已经这样做过,所以我不知道有任何缺点(性能?)或如何进行实施。
新 UI 是使用 .Net 3.5 开发的。我们可以在中间层安装 .Net 3.5,所以我想我们可以从使用 WCF 中受益?