使用协议转换 - 防御提示
2009-02-09 13:52:49 来源:WEB开发网以下是代表这种约定的 .NET 接口:
public interface ILogonService {
int LogonUserViaProtocolTransition(string upn, int callerPID);
}
为了帮助您确定实现这种接口的最佳方式,请考虑下列要求。首先,承载运行此登录服务的进程必须使用 TCB 权限来运行,要做到这一点,最好的方法是以 SYSTEM 来运行。其次,必须仔细确保 ILogonService 接口安全可靠,这样就能保证只有委派的网关可以使用它。否则,它将作为权限提升的手段,使任何用户都能通过登录到具有本地管理员权限的域帐户来提升权限。令人欣慰的是,有一种可以轻松解决这些问题的技术,该技术已构建在 Windows Server 2003 中:即我们的好帮手 COM+。
我曾听到有人断言 COM+ 已经不再有使用价值了。事实绝非如此!在我看来,当您要采用上述方法分解权限时,COM+ 是唯一可取的方法。使用 System.EnterpriseServices,您可以采用所选择的托管语言来编写 COM+ 组件。然后,您可以利用 COM+ 宿主模型在以 SYSTEM 运行的服务中自动承载您的组件。另外,您不必为该服务编写任何代码。请不要忘记 COM+ 中内置的基于角色的安全功能,它将使您能够限制对组件中登录方法的访问,这样一来,只允许被授权运行您的网关的安全主体使用登录服务。
构建 LogonService 程序集后,我通过运行 RegSvcs.exe 将其放入 COM+ 目录,打开组件服务管理工具并找到 LogonService 的 COM+ 服务器包。为了将其加入到以 SYSTEM 运行的服务中,所要做的是为该包生成属性表,打开“激活”选项卡,选中“以 NT 服务运行应用程序”复选框。完成上述操作后,返回到“标识”选项卡,现在,该选项卡中的“本地系统”标识选项已处于可用状态。通过选择该选项,完成对登录服务的配置,将其以 SYSTEM 来运行。
更多精彩
赞助商链接