码迷,mamicode.com
首页 > 其他好文 > 详细

验证(Authentication)和授权(Authorization)(一):

时间:2016-03-27 15:50:24      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

 

采用ASP.NET Web API 提供的IAuthenticationFilter和IAuthorizationFilter接口分别实现验证和授权。其中用到IIdentity和IPrincipal接口。

IIdentity的具体类型用来标识通过验证的用户身份,由用户凭据(Credential)来创建一个指定名称的用户。

接口定义:

    //定义标识对象的基本功能。

    public interface IIdentity

    {

        // 获取所使用的身份验证的类型。

        string  AuthenticationType { get; }

        // 获取一个值,该值指示是否验证了用户。

        bool  IsAuthenticated { get; }

        // 获取当前用户的名称

        string  Name { get; }

    }

不同的验证类型,对IIdentity有不同的实现方式。如:WindowsIdentity(Windows集成)、FormsIdentity(Forms)和GenericIdentity(一般用户)等。

如果自定义实现验证方式,可以采用GenericIdentity来标识用户身份,已通过验证的用户是一个指定名称的GenericIdentity。

GenericIdentity类型定义:

  public class GenericIdentity : ClaimsIdentity

    {

        //     使用指定的 System.Security.Principal.GenericIdentity 对象初始化 System.Security.Principal.GenericIdentity

        //     类的新实例。

        protected GenericIdentity(GenericIdentity identity);

        //     初始化 System.Security.Principal.GenericIdentity 类的新实例,该类表示具有指定名称的用户。

        public GenericIdentity(string name);

        //     初始化 System.Security.Principal.GenericIdentity 类的新实例,该类表示具有指定名称和身份验证类型的用户。

        public GenericIdentity(string name, string type);

        //     获取用于标识用户的身份验证的类型。

        public override string AuthenticationType { get; }

        //     为用户获取此最常用标识表示的所有声明。

        public override IEnumerable<Claim> Claims { get; }

        //     获取一个值,该值指示是否验证了用户。

        public override bool IsAuthenticated { get; }

        //     获取用户的名称。

        public override string Name { get; }

        //     创建作为当前实例副本的新对象。

        public override ClaimsIdentity Clone();

    }

IPrincipal的具体类型表示一个已通过验证并获得授权的对象。

接口定义:

    public interface IPrincipal

    {

        //     获取当前用户的标识。

        IIdentity Identity { get; }

        //     确定当前用户是否属于指定的角色。

        bool IsInRole(string role);

    }

GenericPrincipal类型,用用户标识和角色名称数组来初始化。

    public class GenericPrincipal : ClaimsPrincipal

    {

        //     从用户标识和角色名称数组(标识表示的用户属于该数组)初始化 System.Security.Principal.GenericPrincipal

        //     类的新实例。

        public GenericPrincipal(IIdentity identity, string[] roles);

        //     获取当前 System.Security.Principal.GenericPrincipal 表示的用户的 System.Security.Principal.GenericIdentity。

        public override IIdentity Identity { get; }

        //     确定当前 System.Security.Principal.GenericPrincipal 是否属于指定的角色。

        public override bool IsInRole(string role);

    }

验证(Authentication)和授权(Authorization)(一):

标签:

原文地址:http://www.cnblogs.com/zhijianblogs/p/5325580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!