1

我有许多服务将在 NT Authority\System 的安全上下文中作为 Windows 服务运行(这些服务是基于 NetTCP 的)。Active Directory 中存储的六个组将被允许访问这些服务:

用户 代理 审批者 管理员(三级管理员)

我知道我可以使用 ServiceSecurityContext.Current.WindowsIdentity.Name 获取连接到服务的用户。

我需要做的是在业务层中验证传入的用户上下文是否能够访问特定服务,并且我希望它遵循我公司支持的旧应用程序,该应用程序使用 PrincipalPermission 传递它一个角色并使用确保访问的 Demand() 方法。

我想我最初的问题是,如果我将 ServiceSecurityContext 用户名和相关角色(组)传递给 PrincipalPermission,它是否会自动知道在幕后点击 Active Directory,因为该服务是在同一域上的 AD 帐户的上下文中运行的?或者有什么特别的事情我应该做的吗?

4

1 回答 1

3

对,当你要求一个角色时,它会调用 IPrincipal.IsInRole。这将使用主体拥有的任何实现。所以,如果它设置为 Windows,它会做所有的工作来命中 AD。

于 2009-04-24T21:45:31.813 回答