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

采用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);

}

时间: 2024-10-13 06:05:03

验证(Authentication)和授权(Authorization)(一):的相关文章

[转].net中的认证(authentication)与授权(authorization)

本文转自:http://www.cnblogs.com/yjmyzz/archive/2010/08/29/1812038.html 注:这篇文章主要给新手看的,老手们可能会觉得没啥营养,就请绕过吧. "认证"与"授权"是几乎所有系统中都会涉及的概念,通俗点讲: 认证(authentication) 就是 "判断用户有没有登录?",好比windows系统,没登录就无法使用(不管你是用Administrator或Guest用户,总之要先正确登录后,

.net中的认证(authentication)与授权(authorization)

本文转自:http://www.cnblogs.com/yjmyzz/archive/2010/08/29/1812038.html 认证(authentication) 就是 "判断用户有没有登录?",好比windows系统,没登录就无法使用(不管你是用Administrator或Guest用户,总之要先正确登录后,才能进入系统). 授权(authorization) 就是"用户登录后的身份/角色识别",好比"管理员用户"登录windows后,

认证 (authentication) 和授权 (authorization) 的区别

authentication 和 authorization是两个比较容易混淆的词.其实很简单,举个例子来说: 你要登机,你需要出示你的身份证和机票,身份证是为了证明你张三确实是你张三,这就是 authentication:而机票是为了证明你张三确实买了票可以上飞机,这就是 authorization. 再举一个计算机领域的例子: 你登录一个系统,输入用户名张三,密码123,密码正确,证明你张三确实是张三,这个过程叫authentication:而你是一个一般用户,只有浏览该系统的权限,而李四是

postman的身份验证Authentication

1.概述    Authorization是验证是否拥有从服务器访问所需数据的权限.当发送请求时,通常必须包含参数,以确保请求具有访问和返回所需数据的权限.Postman提供了授权类型,可以轻松地在Postman本地应用程序中处理身份验证协议. 应当注意:NTLM和BearerToken仅在Postman本地应用程序中可用.所有其他授权类型都可以在Postman本地应用程序和Chrome应用程序中使用. 身份验证Authentication 1.Inherit auth from parent

HTTP 请求未经客户端身份验证方案“Anonymous”授权。从服务器收到的身份验证标头为“Negotiate,NTLM”

转自:http://www.cnblogs.com/geqinggao/p/3270499.html 近来项目需要Web Service验证授权,一般有两种解决方案: 1.通过通过SOAP Header身份验证. 2.通过集成windows身份验证. 今天我就尝试了已第二种方式进行授权,首先发布Web Service到IIS,然后选择身份验证,启用Windows身份验证,禁用匿名身份验证 发布好了Web Servive就要在Client端调用了,我用的是VS2008,在client端项目引用中右

Shiro授权(Authorization)

Authorization概述 n概述 授权,又称作为访问控制,是对资源的访问管理的过程.换句话说,控制谁有权限在应用程序中做什么. 授权检查的例子是:该用户是否被允许访问这个网页,编辑此数据,查看此按钮,或打印到这台打印机?这些都是决定哪些是用户能够访问的. n授权的三要素 授权有着三个核心元素:权限.角色和用户 . 我们需要在应用程序中对用户和权限建立关联,通常的做法就是将权限分配给某个角色,然后将这个角色关联一个或多个用户. n权限 权限是Shiro安全机制最核心的元素.它在应用程序中明确

Active Directory Authentication in ASP.NET MVC 5 with Forms Authentication and Group-Based Authorization

I know that blog post title is sure a mouth-full, but it describes the whole problem I was trying to solve in a recent project. The Project Let me outline the project briefly.  We were building a report dashboard-type site that will live inside the c

【HTTP】http 401Basic验证和WWW-Authenticate、Authorization

借阅资料:<HTTP使用BASIC认证的原理及实现方法> 翻看HTTP协议原书,第三部分第十一章 识别.认证与安全,当cookie禁用的时候可以利用401状态码以及响应头WWW-Authenticate来进行.cookie被禁用,一是服务不可用,提醒用户开启cookie功能,譬如网易163邮箱就是这么干的:另一个就是URL重写,java中response.encodeURL方法会自动判断客户端是否禁用cookie然后在url后main追加选项JSESSIONID,但是这种编码比较麻烦. 小网站

JAVA HTTP连接(HttpURLConnection)中使用代理(Proxy)及其验证(Authentication)

public static void main(String[] args) { // TODO Auto-generated method stub try { URL url = new URL("http://www.baidu.com"); // 创建代理服务器 InetSocketAddress addr = new InetSocketAddress("172.21.1.8",80); Proxy proxy = new Proxy(Proxy.Type

ASP.NET(转自wiki)

ASP.NET是由微软在.NET Framework框架中所提供,开发Web应用程序的类库,封装在System.Web.dll文件中,显露出System.Web名字空间,并提供ASP.NET网页处理.扩充以及HTTP通道的应用程序与通信处理等工作,以及Web Service的基础架构.ASP.NET是ASP技术的后继者,但它的发展性要比ASP技术要强大许多. ASP.NET可以运行在安装了.NET Framework的IIS服务器上,若要在非微软的平台上运行,则需要使用Mono平台[2],ASP