security工作笔记004---.NET Web安全性-身份验证和授权(一)之Principal
JAVA技术交流QQ群:170933152
1.概述
为了确保应用程序的安全,安全性有几个重要方面需要考虑。一是应用程序的用户,访问应用程序的是一个真正的用户,还是伪装成用户的某个人?如何确定这个用户是可以信任的?
确保应用程序安全的用户方面是一个2个阶段过程:
- 用户首先需要身份验证
再进行授权,已验证该用户是否可以使用需要的资源
对于在网络上存储或发送的数据呢?例如,有人可以通过网络嗅探器访问这些数据吗?这里数据加密很重要。一些技术,如WCF,通过简单的配置提供了加密功能,所以可以看到后台执行了什么操作。
另一方面是应用程序本身。如果应用程序驻留在WEB提供程序上,如何禁止应用程序执行对服务器有伤害的操作?
2.身份验证和授权
安全性的两个基本支柱是身份验证和授权。身份验证是标识用户的过程,授权在验证了所标识用户是否可以访问特定资源之后进行。
2.1标识和Principal
使用标识可以验证运行应该程序的用户。Windows Indentity 类表示一个Windows用户。如果没有用windows账户标识用户,也可以使用实现了Identity接口的其他类。通过这个接口可以访问用户名,该用户是否通过身份验证,以及验证类型等信息。
Principal是一个包含用户的标识和用户的所属角色的对象。IPrincipal接口定义了Identity属性和IsInRole方法,Identity属性返回Identity对象;在IsInRole方法中,可以验证用户是否是指定角色的一个成员。角色是有相同安全权限的用户集合,同时它是用户的管理单元。角色可以是Windows组或自己定义的一个字符串集合。
表示 Windows 用户。
命名空间: System.Security.Principal
程序集: mscorlib(位于 mscorlib.dll)
继承层次结构
System.Object
System.Security.Claims.ClaimsIdentity
System.Security.Principal.WindowsIdentity
语法
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class WindowsIdentity : ClaimsIdentity, ISerializable,
IDeserializationCallback, IDisposable
构造函数
名称 | 说明 |
---|---|
WindowsIdentity(IntPtr) | 为指定的 Windows 帐户标记表示的用户初始化 WindowsIdentity 类的新实例。 |
WindowsIdentity(IntPtr, String) | 为指定的 Windows 帐户标记和指定的身份验证类型表示的用户初始化 WindowsIdentity 类的新实例。 |
WindowsIdentity(IntPtr, String, WindowsAccountType) | 为指定的 Windows 帐户标记、指定的身份验证类型和指定的 Windows 帐户类型表示的用户初始化 WindowsIdentity 类的新实例。 |
WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean) | 为指定的 Windows 帐户标记、指定的身份验证类型、指定的 Windows 帐户类型和指定的身份验证状态表示的用户初始化 WindowsIdentity 类的新实例。 |
WindowsIdentity(SerializationInfo, StreamingContext) | 初始化 SerializationInfo 流中的信息所表示的用户的 WindowsIdentity 类的新实例。 |
WindowsIdentity(String) | 初始化以指定用户主名称 (UPN) 表示的用户的 WindowsIdentity 类的新实例。 |
WindowsIdentity(String, String) | 初始化以指定用户主名称 (UPN) 和指定身份验证类型共同表示的用户的 WindowsIdentity 类的新实例。 |
WindowsIdentity(WindowsIdentity) | 使用指定的 WindowsIdentity 对象初始化 WindowsIdentity 类的新实例。 |
属性
方法
字段
显式接口实现
protected void Page_Load(object sender, EventArgs e){AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);var principal = WindowsPrincipal.Current as WindowsPrincipal;var identity = principal.Identity as WindowsIdentity;Console.WriteLine("IdentityType:{0}",identity.ToString());Console.WriteLine("Name:{0}", identity.Name);Console.WriteLine("'user'?:{0}", principal.IsInRole(WindowsBuiltInRole.User));Console.WriteLine("'administrtors'?:{0}", principal.IsInRole(WindowsBuiltInRole.Administrator));Console.WriteLine("'authenticated'?:{0}",identity.IsAuthenticated);Console.WriteLine("'authtype'?:{0}", identity.AuthenticationType);Console.WriteLine("'anonymoues'?:{0}", identity.IsAnonymous);Console.WriteLine("'token'?:{0}", identity.Token);}
很显然用户可以很容易访问当前用户及其角色的详细信息,然后使用那些信息决定允许或拒绝用户执行某些动作,这就非常有好处。利用角色和windows用户组,管理员可以完成标准用户管理工具所能完成的工作,这样在用户的角色改变时,通常可以避免代码的更改。
security工作笔记004---.NET Web安全性-身份验证和授权(一)之Principal相关推荐
- 安全性-身份验证和授权(一)之Principal
1.概述 为了确保应用程序的安全,安全性有几个重要方面需要考虑.一是应用程序的用户,访问应用程序的是一个真正的用户,还是伪装成用户的某个人?如何确定这个用户是可以信任的? 确保应用程序安全的用户方面是 ...
- iis授权mysql验证_ASP.NET Web API身份验证和授权
本文是作者所理解和翻译的内容. 这篇文章包括两部分:身份验证和授权. 身份验证用来确定一个用户的身份.例如,Alice用她的用户名和密码登陆系统,服务器用她的用户名和密码来确定她的身份. 授权是判断一 ...
- ASP.NET Web API身份验证和授权
英语原文地址:http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-a ...
- oidc auth2.0_使用Spring Security 5.0和OIDC轻松构建身份验证
oidc auth2.0 "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和 ...
- 使用Spring Security 5.0和OIDC轻松构建身份验证
"我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. Spri ...
- java验证身份证合法性_Java安全性,第2部分:身份验证和授权
关于本教程 本教程是关于什么的? 也许没有比应用程序安全更重要的软件工程主题. 攻击是昂贵的,无论是来自内部还是外部,而且某些攻击可能会使软件公司承担赔偿责任. 随着计算机(尤其是Internet)技 ...
- 开源软件加密授权方案_身份验证和授权作为开源解决方案服务
开源软件加密授权方案 通过实施身份验证和授权(a&a)机制为所有用户数据设计集中式服务. 我将分享我的经验并最终确定解决方案的结论. 该设计包括客户端(Web应用程序)和服务器(A&A ...
- 身份验证和授权作为开源解决方案服务
通过实施身份验证和授权(a&a)机制为所有用户数据设计集中式服务. 我将分享我的经验并最终确定解决方案的结论. 该设计包括客户端(Web应用程序)和服务器(A&A中心). 术语: 1. ...
- 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第1部分
目录 介绍 JWT(JSON Web令牌) ASP.NET Core中的JWToken配置 用户模型类 创建令牌 第1步 第2步 第4步 令牌存储 中间件 自定义中间件app.Use() 中间件app ...
最新文章
- [JS] 事件冒泡,阻止事件冒泡,事件的三个阶段(捕获,目标,冒泡)
- 计算点云之间的平均距离,方差,标准差
- weblogic线程阻塞性能调优(图解)
- 干货丨从感知机到深度神经网络,带你入坑深度学习
- 15.3 Task Task.Yield和Task.Delay说明
- 百度PARL再度夺冠NeurIPS仿生人挑战赛:强化学习控制的流畅行走
- Git使用列表(四)
- 一个实用的显示Visual Studio Code文件绝对路径的扩展应用
- [置顶] Z-STACK之OSAL_Nv非易失性存储解读上
- 每天一个linux命令(性能、优化):【转载】free命令
- Hadoop 生态系列之 HDFS
- 拖动无边框的登入窗口
- c#类库中使用Session
- 诺顿误杀导致系统崩溃 百万PC面临灾难
- 考研数学常见的不等式及其证明
- netcfg_route_netstat_setprop 等命令的使用
- 内网搭建speedtest测速工具
- 高级测试开发进阶知识详解
- 时空位置大数据AI平台技术实现架构设计
- 超详细的VsCode创建SpringBoot项目(图文并茂)