【问题标题】:Silverlight 4 and security frameworkSilverlight 4 和安全框架
【发布时间】:2011-04-05 19:27:05
【问题描述】:

我是一位经验丰富的开发人员,但对 Silverlight、Prism、MVVM 和所有相关的东西都是新手,我需要一种灵活的方法来解决我正在开发的新应用程序的安全性。 我通过我为 WinForms 构建的自定义安全框架(实际上是 Visual WebGui)实现了这个安全模型,但我需要获得一些关于如何为 Silverlight 实现它的指南,或者是否已经构建了一些我可以使用的东西。

所有模块都实现了两个接口,ISecurableModuleISecuredModuleISecurableModule 用于向安全存储库注册模块。 ISecuredModule 用于加强安全性。

在我的 Winforms 应用程序中,在启动时(实际上是在新安装后,首次启动时),会启动一个模块,该模块通过反射检查所有程序集,寻找实现 ISecurableModule 接口的模块。此界面报告模块是否在添加模式、编辑模式、查看模式或都没有启动(例如,报告模块或数据获取/过滤器只能在查看模式下打开,因为其中不能更改任何数据,但是数据条目只能在“添加”、“添加/编辑”或“视图”中打开) 所有这些数据都保存到安全存储库中。

要定义安全权限,我可以创建安全类别 - 例如,库存操作员、库存主管、薪资操作员、薪资主管等。对于每个类别,我分配从安全存储库中选择的具有适当权限的模块(例如,对于库存操作员,我分配具有添加和查看权限的模块接收库存操作或转移库存操作,对于库存主管,我为所有库存模块分配了完全权限)

然后我创建库存操作员角色,并为他分配库存操作员安全类别。我可以为每个角色分配多个安全类别(因为我可以创建具有更高粒度的安全类别 - 例如,用于管理自己的帐户或管理用户组的安全类别 - 这将被授予主管等)

然后在运行时我有工作场所的概念(如 Prism 中的 shell),我可以动态加载模块(真正动态,我使用 ServiceLocator 模式根据它实现的接口定位组件,然后每个都有一个控制器模块类 - 实现相同接口的模块 - 它可以使用枚举字段来识别在需要处理的数据时实际加载哪个模块)。工作区控制器使用安全提供程序检查要加载的模块的访问权限与当前用户的访问权限。

在我的 SL4 应用程序中,我想使用 MVVM 模式,因此我想让我的视图无代码,并通过 ViewModel、ICommands 和数据绑定来驱动整个功能。所以我需要一些关于如何完成我在 SL4 应用程序中描述的功能的建议。我对 Prism 并没有特别的依赖,所以我会考虑是否有另一个 SL4 框架可以帮助我实现这个目标。

【问题讨论】:

    标签: security silverlight-4.0 mvvm


    【解决方案1】:

    您可以尝试以多种方式保护 Silverlight 应用程序,但最终您无法信任客户端。

    我使用的几个准则:

    1. 保护线路:使用 ssl 保护 SL 和后端之间的通信(甚至可以发布自定义令牌以使连接失效)
    2. 不要依赖 Silverlight 应用程序中的机密(私钥、自定义加密方法、隔离存储),因为它们很容易被破解
    3. 在服务器上进行所有重要的逻辑和安全检查。
    4. 在收到(服务)呼叫时始终检查授权;除非您检查,否则您永远不知道谁在打电话。

    我只对模块使用授权来减少下载;如果您无权使用模块,为什么要下载它?

    【讨论】:

    • 感谢您的建议。我知道这些安全措施,但事实上我也对如何从用户身份验证/用户角色的角度实施安全性感兴趣,我的要求与提到的规范有关。
    • 你能解释一下“我只对模块使用授权来减少下载”是什么意思吗? Tnx
    • Silverlight 应用程序的下载大小可能非常大。通过在下载模块之前对用户进行身份验证和授权,可以仅开始下载(甚至可能在需要之前)允许用户使用的那些模块。其他对用户无用,因此不下载。
    • @bzamfir,“如何从用户身份验证/用户角色的角度实现安全性”。您可以使用常规的 ASPNET 成员资格和角色提供程序来保护网站和 Web 服务。可以从 HTML/ASPX 页面和 Silverlight 中进行登录。当然,根据基础架构(内联网),Windows 身份验证也可能是一种选择。您存储角色和用户的方式可以在自定义成员资格/角色提供程序中抽象出来
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 2015-08-22
    • 2011-10-14
    相关资源
    最近更新 更多