zoukankan      html  css  js  c++  java
  • Enterprise Library Step By Step系列(六):安全应用程序块——进阶篇

      一.     认证(Authentication):

       Authentication是一个确认调用者身份的过程,使用时需要考虑以下方面:

    1)界定认证的使用边界(Boundary),尤其当应用系统跨越信任边界时,一个信任边界通常包括:AssembliesProcessesHosts

    2)确认调用者的身份(Caller),通常是用户名和密码。

    关于认证在入门篇里面我们已经给出了示例代码。

    二.     授权(Authorization):

         Authorization的作用在于决定一个被认证的用户是否具有某种业务操作的权限,不适当的或弱授权可能导致信息泄露或篡改的风险。通过授权进行深度防范是安全应用的一个重要策略。

    Authorization Provider有两种:

    Authorization Manager

    Authorization Rule(授权规则)

    下面来详细看一下授权规则的要素:

    IIdentities(身份)

    RRoles(角色)

    Operators(关系操作符)

          AND  OR  NOT  AND ()

    举个例子:R:Employee OR R:Manager OR I:Bob就是一条授权规则

    授权规则编辑器界面如下:

     

    认证的基本代码:

    public static bool Authorized(string rule)
    {
        
    bool authorized = false;
      
        IAuthorizationProvider ruleProvider;
        ruleProvider 
    = AuthorizationFactory.GetAuthorizationProvider();
     
        authorized 
    = ruleProvider.Authorize(Thread.CurrentPrincipal, rule);
     
        
    return authorized;
    }

    三.     角色(Roles):

    在角色中,有两类基本的授权策略:

          基于角色:Role Based

          基于资源:Resource Based

    关于角色授权在GotDotnet上有一个基于数据库的角色授权企业库插件,大家可以下载下来,安装在自己的机器上。通过配置后,会将授权规则保存在数据库中,同时我们可以自行开发一个界面让用户输入。

    下载地址:
    https://files.cnblogs.com/Terrylee/DBRulesAuthorizationProvider.zip
    四.    
    个性化服务(Profiles):

    Profiles是系统面向用户提供的灵活性的个体信息的容器,一个用户的Profile可以使以下一种或多种的集合:

    (1) 简单的字符串或其他基础类型

    (2) 一个序列化的实体

    (3) 基础类型及序列化实体的Dictionary

    保存个性化信息:

     1public static void SaveProfile(BaseForm taskForm)
     2{
     3    // Collect profile information
     4    if (_profile == null) _profile = new ProfileInfo();
     5    _profile.FormColor = taskForm.FormColor;
     6    _profile.TextColor = taskForm.TextColor;
     7 
     8    // Save Profile Information
     9    IProfileProvider profileProvider;
    10    profileProvider = ProfileFactory.GetProfileProvider(); 
    11    profileProvider.SetProfile(Thread.CurrentPrincipal.Identity, _profile);
    12}
      

    加载个性化信息:

     1public static void LoadProfile(BaseForm taskForm)
     2{
     3    // Lookup profile information
     4    if (_profile == null)
     5    {
     6        IProfileProvider profileProvider;
     7        profileProvider = ProfileFactory.GetProfileProvider(); 
     8        _profile = (ProfileInfo) profileProvider.GetProfile(
     9            Thread.CurrentPrincipal.Identity
    10            );
    11    }
     
    12 
    13    // Apply profile
    14    if (_profile == null) _profile = new ProfileInfo();
    15    taskForm.FormColor = _profile.FormColor;
    16    taskForm.TextColor = _profile.TextColor;
    17}

    五.     严格的帐号管理策略:

      在应用管理系统中,我们需要有一套严格的帐号管理策略,那么严格的帐号管理包括那些方面?

    (1) 您的应用是否需要强密码;

    (2) 您是否限制尝试登陆失败的次数;

    (3) 是否对登陆失败的原因给与过多的提示;

    (4) 是否强制推行密码的有效期限;

    (5) 是否根据特殊事件对Account进行无效处理;

    (6) 是否对Login进行日志处理;

    六.     The Security Cache

          在安全应用程序块中允许对Security相关的信息进行缓存,被缓存的喜讯你可以通过Token进行访问,通过缓存而不是每次都进行认证的方式提高系统的效率。

    总结:在安全应用程序块中的内容比较多,不能每一个都给出示例,请大家见谅。建议初学的朋友认真看一下Enterprise Library Hands On Lab,做一些Demo多加以理解。会在以后的项目开发中把安全应用程序块运用的更好。

    支持TerryLee的创业产品Worktile
    Worktile,新一代简单好用、体验极致的团队协同、项目管理工具,让你和你的团队随时随地一起工作。完全免费,现在就去了解一下吧。
    https://worktile.com
  • 相关阅读:
    c++错误崩溃3
    c++崩溃错误2
    c++多线程崩溃错误1
    MySQL UNSIGNED
    2PC和3PC
    proxy-target-class="false"与proxy-target-class="true"区别
    Spring MVC processing flow
    Spring中自动装配的模式
    Spring中BeanFactory和ApplicationContext的区别
    什么是Spring
  • 原文地址:https://www.cnblogs.com/Terrylee/p/263024.html
Copyright © 2011-2022 走看看