【问题标题】:Adding Permissions to a Complex System向复杂系统添加权限
【发布时间】:2009-06-09 15:51:07
【问题描述】:

我有一个项目,其中包含几个单独的组件,它们都需要相互通信。我现在正试图找到一种在每个组件之间共享权限系统的好方法。

三个主要组成部分是:

  1. 一个 ASP.Net Web 应用程序
  2. Silverlight 应用程序(由 Web 应用程序提供服务)
  3. 一个 Windows 服务,它为 Silverlight 应用程序提供一些 WCF Web 服务。

服务器(1,3) 都可以访问同一个数据库。每个组件之间的通信由 WCF Web 服务执行。

我需要确保从 Windows 服务 (3) 请求信息的用户是具有正确访问权限的用户。 Silverlight App(2) 是请求的来源。目前,Windows Service(1) 没有用户信息可用,因为它与 Asp.Net App(3) 完全分离。我不想存储和传递用户名和密码,用户应该只需要输入一次他们的凭据,这发生在登录 ASP.Net App(1) 时。

获取 Windows 服务的用户标识的好方法是什么(3)?

(我将在下面发布我认为的答案。)

【问题讨论】:

    标签: asp.net wcf silverlight windows-services permissions


    【解决方案1】:

    如果由我决定,我会使用来自 ASP 登录的身份验证信息(用户)来传递。该对象会自动传递给所有 ASP.NET 网页,因此在您需要调用 Windows 服务时随时可用,并且您应该能够轻松地验证权限。

    【讨论】:

    • 我曾考虑过这一点,但我认为对于劫持者来说,简单地将用户 ID 传递给 Web 服务并假装是用户太容易了。与会话 ID 的情况类似,但会话 ID 应该偶尔更改,而用户 ID 将保持不变。
    • User 对象不仅仅是一个用户 ID - 它是一个在登录时创建的内存对象(可能存储在 Session 中,但我必须仔细阅读才能确定)。它至少和 Session ID 一样安全,而且不是容易可注入的。
    【解决方案2】:

    您可以使用向 Silverlight 公开 ASP.NET 身份验证机制的 ASP.NET 应用程序服务来保护 Silverlight 和 ASP.NET 之间的调用。 Silverlight 应用程序随后将维护会话信息以供后续调用 ASP.NET。过去,我在 ASP.NET 应用程序中创建了 WCF 服务,并使用 PrincipalPermission 属性 (http://msdn.microsoft.com/en-us/library/ms731200.aspx) 使用 Silverlight 中提供的登录信息来保护 WCF 服务方法。此方案完美运行,并且不需要您创建自己的安全机制,例如传递会话 ID 或指示用户名的字符串(不推荐)。我认为这种设置也适用于多台服务器之间的情况,但我不确定在 Windows 服务中托管 WCF 服务将如何影响安全性。可能有一种方法可以在两者之间启用某种形式的模仿。一定要考虑 ASP.NET 应用程序服务来保护 #1 和 #2,如果你能设法在 IIS 中托管你的 WCF 服务,那么它将满足你的所有要求,而你最终只需要很少的工作。

    【讨论】:

      【解决方案3】:

      我看到的一种可能性是从 ASP.Net 应用程序传递会话 ID 以进行用户识别。

      当 Silverlight 应用程序 (2) 由 Asp.Net(1) 提供服务时,它可以传递会话 ID。然后,当 Silverlight 应用程序 (2) 向 Windows 服务 (3) 发出请求时,它可以将会话 ID 作为参数传递。 Windows 服务(3) 可以使用 Asp.Net 应用程序(1) 公开的 WCF 服务来查询给定会话 ID 的用户标识。

      这里是否存在潜在的安全漏洞?在我看来,如果有人可以劫持 sessionID,那么无论它是否传递给 Silverlight 应用程序,它都会被暴露和劫持。

      【讨论】:

        猜你喜欢
        • 2014-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-17
        • 2012-07-12
        • 2020-08-06
        • 2012-04-15
        • 2014-06-18
        相关资源
        最近更新 更多