【问题标题】:How can I ensure that IsInRole checks are not using cached credentials如何确保 IsInRole 检查不使用缓存的凭据
【发布时间】:2011-10-05 04:06:40
【问题描述】:

我有一个连接到 WCF 服务的 WPF 客户端,我想锁定某些功能,以便只有某些用户可以执行某些操作。 WCF 服务在执行服务方法时模拟客户端用户。操作系统是 Windows XP。

我正在阅读 this question 作为我调查将用户角色应用于我的应用程序功能的最佳方式的一部分(我想将用户分配到 AD 安全组,然后检查 IsInRole),并且担心缓存的权限将允许已减少权限的用户访问他们不再有权访问的功能。相反,我也担心权限升级后的用户需要注销他们的 Windows 帐户,甚至可能需要重新启动 WCF 服务(最坏的情况)才能访问新功能。

确保客户端和服务器都能立即看到对 AD 安全组的更改的最简单方法是什么?

【问题讨论】:

  • 角色成员的更改需要一些时间才能传播(包括用户新登录)是很正常的。例如,如果您有主域控制器和辅助域控制器,则同步更改也可能需要很长时间并且用户仍然可以从辅助控制器接收旧权限。
  • @Ladislav Mrnka 我想我将不得不忍受一些延迟,但我特别想避免使用本地缓存的权限(在用户的机器上)。我不知道 WCF 服务是否会在模拟用户时发出自己的请求来检查角色成员身份,或者它是否会从客户端接收这些详细信息以及身份。

标签: c# wcf active-directory wcf-security windows-principal


【解决方案1】:

您始终可以实现自己的成员资格提供程序来查询 AD。 这非常简单,您可以确保所有权限评估都是准确的,或者至少完全符合您的要求。

如果您发现在每次评估时查询 AD 服务器的性能“昂贵”,您可以在客户端上创建自己的缓存,您可以强制定期或按需刷新。 该缓存可以像权限索引列表(如字典)一样简单,您可以快速查询。

这是一篇关于如何与 AD 交互的好文章: http://www.codeproject.com/KB/system/everythingInAD.aspx

【讨论】:

  • 好的,这是一篇相当全面的文章,谢谢!我想我必须尝试一下,看看查询有多慢,但是在客户端启动时执行一次是我需要填补我最担心的安全漏洞的最低要求:)
猜你喜欢
  • 2012-05-10
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多