`
pcajax
  • 浏览: 2162684 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

认证,授权2

阅读更多

以前对这部分一直糊涂着,总算理理清楚了

包名:System.Security.Principal:
Identity:(识别)包装了已经验证过的用户名和认证的方式
 主要成员:Name, IsAuthenticated, AuthenticationType
Principal: 当前代码的security上下文。包含Identity和Roles. 用于授权
 主要成员:IsInRole, Identity

* // 一般用户可以有多个Indentity, 即多种身份来访问不同资源 --pending
* 每个AppDomain里面都有CallContext,CallContext里面包含Principal。线程在启动的时候也会带上Pricncipal的ref。静态方法,仅对当前线程
* Thread.CurrentPrincipal / WindowsIdentity.GetCurrent()静态方法返回当前用户。

Permission: 权限。不是用户需要权限,是执行它的代码需要权限。
     Demand()要求调用此代码的代码有什么权限。Assert()断言
三种权限:
  1 代码权限: 基类为CodeAccessPermission .用来保护环境变量、文件、访问非托管代码。总表参见:
       ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpguide/html/cpconcodeaccesspermissions.htm
  2 Identity权限:基类为CodeAccessPermission。对应于控制台中的信任集设定。基于发行者、强类型、域、URL。总表:
   ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpguide/html/cpconidentitypermissions.htm
  3. PrincipalPermission(Role Based Permission)

Authorization 授权 判断用户是否有权操作,比如登录的用户有没有权限访问资源或者数据库
Authentication 认证 用户的Identity. 主要有:HTTP基础认证、证书、Kerberos、Passport、NTLM、Forms-based、Digest

这两个东西最好从读音上区别,以前一直糊涂。一般应用先authenticate用户, 判断用户是否能链接到系统。然后authorization, 判断对某个功能是否有权限。

authorization一般有两种:ACL/ROLES
ACL:Acess Control Lists. 判断用户是否在有权限的用户组内。缺点:不能定义动态条件。
Role based: 用户加入到某个role以后,自动获得了很多特定的权限。先判断请求者的Identity, 然后看它是否在Role里面。类似windows用户和组的关系

1. 代码中的检查方式:new PrincipalPermission(name,role).Demand();
2. 利用Attribute的方式:[PrincipalPermissionAttribute(SecurityAction.Demand,Name="MyUser", Role="Administrator")]
3. 使用 Principal 对象中的属性和 IsInRole 方法执行显式安全性检查。
4. web.config里面authorization节中的users/roles(这个一般资料都没提到)


参考:
台湾MSDN Library 中文技術文件PPT, 文章
台湾msdn里面有不少好东西,比china的强多了!

补充:
1. ASP.net中线程的Principal是根据HttpComtext.Current.User来的,但是从线程取更值得推荐(与asp.net无关)
2. AppDomain.CurrentDomain.SetPrincipalPolicy设定Thread.CurrentPrincipal的预设值
3. AppDomain.CurrentDomain.SetThreadPrincipal(Thread.CurrentPrincipal) 设定新线程的预设Principal, 只能调用一次

1. HttpContext.User用来设定登录后的User,可影响到System.Web.UI.Page.User(只读)和System.Threads.Thread.CurrentPrincipal.

2. global.asax的AuthenticateRequest事件中也可以设定HTtpContext.User。

3. 参考:建置安全的 ASP.NET 應用程式: 驗證、授權和安全通訊(http://www.microsoft.com/taiwan/msdn/books/ataglance/SecNetAP04.htm)

4. Intercepting Filter (截取筛选器)实现IHttpModule, 并自行处理以下事件:

BeginRequest. 此事件标志着这是一个新请求;每个请求都必须产生该事件。

AuthenticateRequest. 此事件标志着所配置的身份验证机制已经验证了请求。附加到此事件可向筛选器确保请求已通过身份验证。

AuthorizeRequest. 与 AuthenticateRequest 一样,此事件标志着现在请求在处理过程中又前进了一步,并且请求已经得到授权。

ResolveRequestCache. 输出缓存模块使用此事件来简化对已经缓存的请求所进行的处理。

AcquireRequestState. 此事件标志着应该获得各个请求状态。

PreRequestHandlerExecute. 此事件标志着请求处理程序将要执行。这是在调用此请求的 HTTP 处理程序之前您可以参与的最后一个事件。

下一个列表显示了处理请求之后产生的事件。这些事件是按照发生的顺序列出的:

PostRequestHandlerExecute. 此事件标志着 HTTP 处理程序已经完成了对请求的处理。

ReleaseRequestState. 此事件标志着应该存储请求状态,因为应用程序已经完成了对请求的处理。

UpdateRequestCache. 此事件标志着代码处理已完成,可以将文件添加到 ASP.NET 缓存中。

EndRequest. 此事件标志着已完成对请求的所有处理。这是应用程序结束时所调用的最后一个事件。

此外,以下三个请求处理前事件可以按不确定顺序引发:

PreSendRequestHeaders.此事件标志着 HTTP 头将要发送给客户端。因此可以在发送之前添加、删除或修改头信息。

PreSendRequestContent. 此事件标志着内容将要发送给客户端。这为发送之前修改内容提供了一个机会。

Error. 此事件标志着有未处理的异常。

在web.config中添加:
<httpModules>
<add name="UserLogModule" type="UserLogModule, ifilter" />
</httpModules>
分享到:
评论

相关推荐

    Spring Security OAuth2认证授权示例详解

    Spring Security OAuth2是一个强大的安全框架,它为Web应用程序提供了安全认证和授权的功能。OAuth2则是一种开放标准,允许用户授权第三方应用访问他们存储在另一服务提供商的数据,而无需分享他们的用户名和密码。...

    Spring security认证授权

    2. **授权过程**: - **访问决策管理器**:Spring Security使用`AccessDecisionManager`来决定用户是否可以访问某个资源。默认使用投票机制,根据用户的权限角色来决定。 - **访问控制表达式**:你可以使用`@...

    ABP框架之OpenIddict分布式认证授权学习手册v1.0

    《ABP框架之OpenIddict分布式认证授权学习手册v1.0》是Rex编写的,旨在引导读者深入理解如何在ABP框架下利用OpenIddict进行分布式认证授权的实践操作。本文将详细解析手册中的关键知识点,帮助开发者构建安全、高效...

    Spring Cloud下基于OAUTH2认证授权的实现

    接下来,我们将深入探讨如何在Spring Cloud环境中实现OAuth2认证授权。 首先,OAuth2的核心概念包括客户端(Client)、资源所有者(Resource Owner)、资源服务器(Resource Server)和授权服务器(Authorization ...

    aaa服务器的认证授权计费

    ### AAA服务器的认证、授权与计费:深入解析与配置指南 #### 认证:确保网络安全性 在AAA(Authentication, Authorization, and Accounting)体系结构中,认证是基础且关键的第一步,它确保只有经过验证的用户才能...

    公钥加密,数字签名,公钥认证,认证授权,基于 PKI 授权.zip

    "公钥加密,数字签名,公钥认证,认证授权,基于 PKI 授权.txt"可能进一步阐述了这些概念的实际应用,例如在电子商务、电子政务、物联网设备认证等场景下的作用和实现方法。 "公钥加密与PKI实验_加密解密_实验楼 - ...

    Spring Security+OAuth2 精讲,打造企业级认证与授权2022升级

    Spring Security+OAuth2 精讲,打造企业级认证与授权(2022升级版) 1、企业级认证授权专项解决方案 系统解锁后端开发者必备的"安全"技能 2、主流安全框架核心一网打尽,只学实用的

    ABP框架之IdentityServer4分布式认证授权学习手册v1.0

    IdentityServer4是ABP框架中用于实现分布式认证授权的核心组件,它是一个符合OpenID Connect和OAuth 2.0标准的认证服务器,可以为微服务架构提供安全的API访问。 1. **介绍** ABP框架与IdentityServer4的结合,...

    Spring Security+OAuth2 精讲,打造企业级认证与授权

    本课程"Spring Security+OAuth2 精讲,打造企业级认证与授权"深入浅出地讲解了这两个框架的使用和集成,旨在帮助开发者构建安全、高效的应用系统。 Spring Security是Spring生态系统中的一个强大安全框架,它提供了...

    留学人员学历认证授权声明模板..doc

    留学人员学历认证授权声明模板 本文档提供了留学人员学历认证授权声明模板,供留学人员在申请学历认证时使用。该模板涵盖了个人信息、授权声明和签名等重要内容,旨在帮助留学人员快速、准确地提交学历认证申请。 ...

    手把手教你AspNetCore WebApi认证与授权的方法

    这几天小明又有烦恼了,之前给小红的接口没有做认证授权,直接裸奔在线上,被马老板发现后狠狠的骂了一顿,赶紧让小明把授权加上。赶紧Baidu一下,发现大家都在用JWT认证授权,这个倒是挺适合自己的。 什么是Token ...

    第5章 认证授权v3.1

    在IT行业中,认证授权是确保系统安全性的重要环节。在第5章"认证授权v3.1"中,我们将深入探讨这一关键概念及其在实际项目中的应用。本章主要分为两个部分:模块需求分析和Spring Security认证研究。 1. **模块需求...

    shiro认证授权框架详解

    shiro 认证授权框架详解 Shiro 认证授权框架是 Java 中一种流行的认证授权解决方案,提供了完整的认证和授权机制,能够满足大多数应用程序的安全需求。Shiro 框架的核心思想是将认证和授权分离,认证负责验证用户...

    基于python的统一身份认证授权管理解决方案,支持多种标准协议(LDAP, OAuth2, SAML, OpenID)

    基于Python的统一身份认证授权管理系统提供了一种高效、安全的解决方案,它能够支持多种业界标准协议,如LDAP(轻量目录访问协议)、OAuth2、SAML(Security Assertion Markup Language)以及OpenID。这些协议在不同...

    spring cloud oauth2 zuul 单点登录 认证授权

    **Spring Cloud OAuth2** 是OAuth2协议的Java实现,它是Spring Security的扩展,为微服务提供了认证和授权功能。使用Spring Cloud OAuth2,我们可以创建一个授权服务器来处理用户的登录和授权请求,以及保护资源...

    统一认证身份授权技术交底书

    综上所述,本专利提出的技术方案为现有的统一认证授权体系提供了一种更为高效、灵活且可靠的解决方案。通过实现业务系统细粒度的反向授权,不仅可以显著提高企业的信息化管理水平,还能为企业带来更多的竞争优势。...

    Spring Security Oauth2.0认证授权专题

    Spring boot+Spring Security Oauth2.0,Sprint cloud+Spring Security Oauth2集成。四种认证方式。附带有代码,和案例,案例,还有视频链接。我保证看完就回,如果视频链接失效,评论回复我,我单独再给你一份。

    现代化架构下企业统一身份认证和授权实现.pdf

    现代化架构下企业统一身份认证和授权实现 本文主要讨论了现代化架构下企业统一身份认证和授权实现的重要性和必要性。在现代化架构下,企业中有很多不同的应用系统,每个系统都需要用户注册和登陆,导致用户需要记忆...

    认证授权相关技术总结

    shiro等相关认证授权总结,Apache Shiro是一款功能强大且易于使用的Java安全框架,它为开发人员提供了一种直观而全面的解决方案,以验证、授权、加密和会话管理。

    Java认证和授权服务笔记代码

    Java认证和授权服务(Java Authentication and Authorization Service,简称JAAS)是Java平台提供的一种安全机制,用于处理用户身份验证和权限管理。它为开发者提供了一种标准的方式来集成各种安全策略和认证机制,...

Global site tag (gtag.js) - Google Analytics