65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Visual Guard .Net 重用 Windows 帐户进行应用程序访问控制

2009年4月2日

CPOL

6分钟阅读

viewsIcon

23646

了解如何通过重用 Windows 帐户进行身份验证来控制对 .NET 应用程序的访问。与 Active Directory 集成并向 Windows 帐户授予角色和权限。感谢 .NET 反射机制,无需编写代码即可定义权限。

引言

控制对公司应用程序的访问通常意味着

  • 身份验证功能,以验证进入应用程序的用户的身份
  • 权限功能,以限制他们对应用程序数据和功能的访问

如果您需要重用 Active Directory 中存储的 Windows 帐户进行身份验证,那么别无选择。
Visual Guard 是 .NET 应用程序中访问控制的全面解决方案。它在同一个工具中结合了身份验证、权限和审计功能。

本文演示了如何重用 Windows 帐户来验证最终用户并使应用程序适应用户权限。

Visual Guard .NET 能为您做什么?

下面的屏幕截图显示了一个由 Visual Guard .Net 保护的应用程序的结果

  • 用户使用当前的 Windows 帐户自动进行身份验证。
  • 应用程序打开,无需任何用户凭据
  • 自动强制执行用户权限

以下是应用程序为符合用户权限而更改的一些示例

示例 1:隐藏或禁用控件

下面的屏幕截图显示了一个员工表单,分别在没有和有 Visual Guard 强制执行的限制的情况下:一个字段被隐藏,一个按钮被禁用。

示例 2:筛选数据

您可能需要限制对敏感数据的访问。
下面的示例筛选了一个列表,以隐藏用户不应访问的记录。
如果需要,您还可以隐藏列或特定字段……

先决条件

对于本教程,您需要安装 Microsoft Visual Studio 2008 或 Visual Studio 2005。下面的代码示例用于集成到 winform C# 应用程序中。winform VB.NET 或ASP.NET 的代码示例可在此处获取

从 Visual Guard 网站可获得免费的 30 天试用版

步骤 1:在 Visual Guard 中声明 Windows 帐户

为此,您将使用 Visual Guard 控制台(无代码)。

打开 Visual Guard 控制台,并使用默认的主管理员帐户登录(用户名='Admin' / 密码='pwd')。
主管理员拥有所有功能的完全访问权限。其他角色可用于开发人员、管理员和审计员,他们只能执行开发、身份管理或审计任务。

在控制台中,打开存储库=>用户,右键单击并选择“添加 Windows 用户或组”。

将打开以下对话框

选择您要授予应用程序访问权限的 Windows 帐户或组。在一个存储库中,Visual Guard 可以管理来自多个域的帐户,只要它们属于同一林。

步骤 1 已完成,Windows 帐户现已在 Visual Guard 存储库中声明。
我们现在将

  • 将您的应用程序与 Visual Guard 集成
  • 创建权限以限制对您应用程序的访问
  • 将此权限授予 Windows 帐户

步骤 2:将 Visual Guard 集成到您的应用程序中

将 Visual Guard 集成到您的应用程序中非常简单。

  1. 在项目中引用 Visual Guard 程序集

在 Visual Studio(2005 或 2008)中打开您的项目,并将 Visual Guard 的程序集作为您项目的引用添加,如下所示

  • VisualGuard.Security 是主要程序集,始终需要。
  • 然后,您应该包含对应于您的应用程序类型的程序集(Winforms、Webforms、WebServices)。
  • 最后,您将包含对应于您的存储库的程序集(Oracle、SQLServer、文件)。
  1. 添加以下代码

此代码将使用当前的 Windows 帐户验证用户,并加载该应用程序的用户权限。

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Novalys.VisualGuard.Security;
using Novalys.VisualGuard.Security.WinForm;

namespace ADdemo
{
    static class Program
    {
        /// <summary>
        /// Main 
        Entry point of the application
            /// </summary>
            [STAThread]
            static 
                void Main()
            {

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                //Load 
                security
                    VGAuthorizationState 
                    state = VGSecurityManager.LoadSecurity (
                        System.Security.Principal.WindowsIdentity.GetCurrent());
                if 
                    (state.IsFailed)
                {
                    if 
                        (state.IsUserNotFound)
                    {
                        MessageBox.Show("Your 
                            are not declared in the security repository");
                    }
                    else
                    {
                        if 
                            (state.IsUserNotAuthorized)
                        {
                            MessageBox.Show("Your 
                                are not authorized to log on to this application");
                        }
                    }
                }
                else
                {
                    Application.Run(new Form1());
                }
            }
    }
}
  1. 创建存储库并声明您的应用程序

在 Visual Guard 控制台中,打开菜单 [文件 - 添加存储库],然后按照向导说明进行操作。选择“创建新的空存储库”,然后选择“文件”作为存储库类型,指定新文件存储库的名称和位置,并确保选择 Windows 身份验证模式。

Visual Guard 现在已与您的应用程序集成,并且您的应用程序已在存储库中声明。

您会在此处找到一个类似的ASP.NET 应用程序示例

步骤 3:定义权限并将其授予 Windows 帐户

这是它的工作原理



用户被授予一个角色。
一个角色包含一组权限。
一个权限集包含权限。
一个权限包含技术操作。


默认情况下,权限是硬编码在应用程序中的。

Visual Guard 仍然支持此可能性。但是,该工具提供了一个有趣的替代方案,基于 .NET 反射机制。

您可以在 Visual Guard 中声明权限(而不是在应用程序中编写代码),Visual Guard 将在运行时动态应用它们。总之,安全规则与应用程序代码分离,并且可以在不访问代码的情况下进行演变。您可以在运行时添加或修改权限,将权限授予角色,并将角色授予用户。维护安全时无需重新构建您的应用程序!

大多数 Visual Guard 权限都包括更改对象属性以限制用户访问(禁用或隐藏控件、筛选网格……)。还提供更复杂的权限以满足特定需求(使用数据库中的值、依赖条件……)。

让我们举个例子
右键单击“权限”,选择“新建权限”,并将其命名为“隐藏员工地址”。

右键单击此新权限并选择“新建属性操作”(意味着您将定义一个操作,该操作将更改您应用程序中的属性)。

VG 权限编辑器打开。此向导将允许您定义

  1. 何时执行此操作(在哪个事件上,在什么条件下)
  2. 您要更改哪个对象.控件.属性
  3. 这些属性应取哪个值

如前所述,这只是一个存储在 VG 存储库中的声明,您不会在应用程序中编写代码。

  1. 选择此操作修改的对象。

此时,Visual Guard 使用 .NET 反射列出了您应用程序中的所有对象。然后,您可以选择“Employee”对象来修改它。

  1. 定义何时执行此操作。

默认情况下,在 Visual Guard 加载安全设置后立即执行操作。您可以在触发应用程序中的任何事件时执行操作,还可以定义该操作的执行条件

  1. 选择要修改的控件和属性,选择要修改的属性,然后更改其值。

例如,在我们的例子中,我们将决定隐藏地址和出生日期字段

在权限编辑器中

  • 同时选择所有相应的字段
  • 选择“可见”属性
  • 选择“false”作为此属性的值
  • 单击“完成”按钮。

现在已定义权限,您仍然需要将此权限授予用户。

因此,您应该

  • 将此新权限包含在权限集中(拖放)
  • 将此权限集授予一个角色(拖放)。
  • 将此角色授予用户帐户(用户名/右键单击/编辑角色列表)。

现在,如果我们从当前的 Windows 会话中打开应用程序,员工的地址字段已被动态隐藏。

如果您想了解更多关于 Visual Guard .NET 的信息,请访问www.visual-guard.com

© . All rights reserved.