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相关推荐

  1. 安全性-身份验证和授权(一)之Principal

    1.概述 为了确保应用程序的安全,安全性有几个重要方面需要考虑.一是应用程序的用户,访问应用程序的是一个真正的用户,还是伪装成用户的某个人?如何确定这个用户是可以信任的? 确保应用程序安全的用户方面是 ...

  2. iis授权mysql验证_ASP.NET Web API身份验证和授权

    本文是作者所理解和翻译的内容. 这篇文章包括两部分:身份验证和授权. 身份验证用来确定一个用户的身份.例如,Alice用她的用户名和密码登陆系统,服务器用她的用户名和密码来确定她的身份. 授权是判断一 ...

  3. ASP.NET Web API身份验证和授权

    英语原文地址:http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-a ...

  4. oidc auth2.0_使用Spring Security 5.0和OIDC轻松构建身份验证

    oidc auth2.0 "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和 ...

  5. 使用Spring Security 5.0和OIDC轻松构建身份验证

    "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. Spri ...

  6. java验证身份证合法性_Java安全性,第2部分:身份验证和授权

    关于本教程 本教程是关于什么的? 也许没有比应用程序安全更重要的软件工程主题. 攻击是昂贵的,无论是来自内部还是外部,而且某些攻击可能会使软件公司承担赔偿责任. 随着计算机(尤其是Internet)技 ...

  7. 开源软件加密授权方案_身份验证和授权作为开源解决方案服务

    开源软件加密授权方案 通过实施身份验证和授权(a&a)机制为所有用户数据设计集中式服务. 我将分享我的经验并最终确定解决方案的结论. 该设计包括客户端(Web应用程序)和服务器(A&A ...

  8. 身份验证和授权作为开源解决方案服务

    通过实施身份验证和授权(a&a)机制为所有用户数据设计集中式服务. 我将分享我的经验并最终确定解决方案的结论. 该设计包括客户端(Web应用程序)和服务器(A&A中心). 术语: 1. ...

  9. 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第1部分

    目录 介绍 JWT(JSON Web令牌) ASP.NET Core中的JWToken配置 用户模型类 创建令牌 第1步 第2步 第4步 令牌存储 中间件 自定义中间件app.Use() 中间件app ...

最新文章

  1. [JS] 事件冒泡,阻止事件冒泡,事件的三个阶段(捕获,目标,冒泡)
  2. 计算点云之间的平均距离,方差,标准差
  3. weblogic线程阻塞性能调优(图解)
  4. 干货丨从感知机到深度神经网络,带你入坑深度学习
  5. 15.3 Task Task.Yield和Task.Delay说明
  6. 百度PARL再度夺冠NeurIPS仿生人挑战赛:强化学习控制的流畅行走
  7. Git使用列表(四)
  8. 一个实用的显示Visual Studio Code文件绝对路径的扩展应用
  9. [置顶] Z-STACK之OSAL_Nv非易失性存储解读上
  10. 每天一个linux命令(性能、优化):【转载】free命令
  11. Hadoop 生态系列之 HDFS
  12. 拖动无边框的登入窗口
  13. c#类库中使用Session
  14. 诺顿误杀导致系统崩溃 百万PC面临灾难
  15. 考研数学常见的不等式及其证明
  16. netcfg_route_netstat_setprop 等命令的使用
  17. 内网搭建speedtest测速工具
  18. 高级测试开发进阶知识详解
  19. 时空位置大数据AI平台技术实现架构设计
  20. 超详细的VsCode创建SpringBoot项目(图文并茂)

热门文章

  1. Java中封装、关键字及构造方法
  2. Python中出现“TabError: inconsistent use of tabs and spaces in indentation”
  3. Hadoop系列之ToolRunner与GenericOptionsParser用法
  4. 利用Adorner制作用于图像裁切的选择框
  5. 模板方法(Template)模式
  6. Apple计划开发完全定制的GPU架构
  7. logstash 启动方式
  8. 别在最吃苦的年龄选择了潇洒
  9. 框架会使程序员变笨吗?
  10. Win 2003系统传真功能的配置及使用