asp.net权限认证:Windows认证
Windows认证简单介绍
Windows认证的操作会比较简单,其主要是把用户的交给IIS认证,而且还是一种比较安全的认证哦。
在一些企业内部的工作流系统中,都会要求使用Windows认证,因为他不论对开发者还是对最终使用用户来说,都比较容易操作。
今天我们也来试试,先创建一个demo
新建Default.aspx页面
先不管他,让他空着,他的cs页面如下
using System; namespace WebApplication1
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var authenticationType = System.Web.HttpContext.Current.User.Identity.AuthenticationType;
var domainUserName = System.Web.HttpContext.Current.User.Identity.Name; Response.Write("域账号:" + domainUserName + "<br/>");
Response.Write("认证类型:" + authenticationType + "<br/>");
}
}
}
web.config配置文件
<configuration>
<system.web>
...
<authentication mode="Windows" />
</system.web>
</configuration>
IIS身份认证中关闭其他认证,只保留“Windows身份认证”
运行项目
项目通过IIS拿到domainUserName,然后剩下的操作获取用户权限等,就跟Forms认证是一样了,当然了,我们还可以获取更加详细的用户信息
修改default.aspx.cs
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var domainUserName = System.Web.HttpContext.Current.User.Identity.Name;
var authenticationType = System.Web.HttpContext.Current.User.Identity.AuthenticationType; Response.Write("域账号:" + domainUserName + "<br/>");
Response.Write("认证类型:" + authenticationType + "<br/>"); var user = this.GetUserInfo(domainUserName);
if (user != null)
{
Response.Write("登录名:" + user.SAMAccountName + "<br/>");
Response.Write("短名称:" + user.GivenName + "<br/>");
Response.Write("名称:" + user.CN + "<br/>");
Response.Write("邮件:" + user.Email + "<br/>");
}
} private UserInfo GetUserInfo(string domainUserName)
{
try
{
if (string.IsNullOrEmpty(domainUserName))
{
return null;
} var userArr = domainUserName.Split('\\');
var domain = userArr[0];
var loginName = userArr[1]; var entry = new DirectoryEntry(string.Concat("LDAP://", domain));
var search = new DirectorySearcher(entry);
search.Filter = string.Format("(SAMAccountName={0})", loginName);
search.PropertiesToLoad.Add("SAMAccountName");
search.PropertiesToLoad.Add("givenName");
search.PropertiesToLoad.Add("cn");
search.PropertiesToLoad.Add("mail"); var result = search.FindOne();
if (result != null)
{
var info = new UserInfo();
info.SAMAccountName = result.Properties["SAMAccountName"][0].ToString();
info.GivenName = result.Properties["givenName"][0].ToString();
info.CN = result.Properties["cn"][0].ToString();
info.Email = result.Properties["mail"][0].ToString();
return info;
}
}
catch
{ } return null;
} public sealed class UserInfo
{
public string SAMAccountName;
public string GivenName;
public string CN;
public string Email;
}
}
再次运行项目
完美!至此,所有必要操作都已经做完,是不是很简单?刚开始接触的童鞋可能会问,既然是认证怎么不用输入用户名密码?
windows认证就是那么任性!不需要用户输入用户口令,直接通过IIS获取当前用户的域账户名称,认证过程在你登录电脑的时候就已经完成了
如何切换用户
细心的童鞋可能发现了一个问题:如何切换用户?
这是一个比较现实的问题,因为不能保证企业内所有人都会有一台电脑办公。
那怎么办呢?有2种方法
1、是退出当前用户,登录另外的用户
2、调整浏览器默认设置,强制输入用户口令,如下
我们再试试运行项目
成功了,这次输入口令后刷新浏览器不会再弹出,只有关闭浏览器才会重新要求输入
asp.net权限认证系列
- asp.net权限认证:Forms认证
- asp.net权限认证:HTTP基本认证(http basic)
- asp.net权限认证:Windows认证
- asp.net权限认证:摘要认证(digest authentication)
- asp.net权限认证:OWIN实现OAuth 2.0 之客户端模式(Client Credential)
- asp.net权限认证:OWIN实现OAuth 2.0 之密码模式(Resource Owner Password Credential)
- asp.net权限认证:OWIN实现OAuth 2.0 之授权码模式(Authorization Code)
- asp.net权限认证:OWIN实现OAuth 2.0 之简化模式(Implicit)
asp.net权限认证:Windows认证的更多相关文章
- asp.net权限认证篇外:集成域账号登录
在之前的我们已经讲过asp.net权限认证:Windows认证,现在我们来讲讲域账号登录, 这不是同一件事哦,windows认证更多的是对资源访问的一种权限管控,而域账号登录更多的是针对用户登录的认证 ...
- asp.net权限认证:Forms认证
asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...
- asp.net权限认证:HTTP基本认证(http basic)
asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...
- asp.net权限认证:摘要认证(digest authentication)
asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...
- asp.net权限认证:OWIN实现OAuth 2.0 之客户端模式(Client Credential)
asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...
- asp.net权限认证:OWIN实现OAuth 2.0 之密码模式(Resource Owner Password Credential)
asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...
- asp.net权限认证:OWIN实现OAuth 2.0 之授权码模式(Authorization Code)
asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...
- asp.net权限认证:OWIN实现OAuth 2.0 之简化模式(Implicit)
asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...
- [转]asp.net权限认证:摘要认证(digest authentication)
本文转自:http://www.cnblogs.com/lanxiaoke/p/6357501.html 摘要认证简单介绍 摘要认证是对基本认证的改进,即是用摘要代替账户密码,从而防止明文传输中账户密 ...
随机推荐
- Gamma原理及快速实现算法(C/C++)(转)
源:Gamma原理及快速实现算法(C/C++) 原文:http://blog.csdn.net/lxy201700/article/details/24929013 参考 http://www.cam ...
- 用saxon框架对xml数据进行过滤 - 程序员的天堂 - ITeye技术网站
用saxon框架对xml数据进行过滤 博客分类: Java Saxon 是一个 XSLT 和XQuery处理器.它是使用 XML 文档和样式表作为输入,然后生成结果文档作为输出的程序,它还包括了一 ...
- (简单) FZU 1686 神龙的难题 , DLX+可重复覆盖。
Description 这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来说,库尔特王国是个安宁的国家,人民安居乐业,魔物也比较少.但是.总有一些魔物不时会进入城市附近,干扰人民的生活.就 ...
- 一个不应该犯的错octave
今天在完成Andrew NG的机器学习神经网络作业,在实现花费函数的时候,没有使用循环,直接向量计算.前面都想的挺好的,很快就想到了如何使用向量来计算,可是在扩展y的时候,犯了一个超级傻的错误. y是 ...
- 一次性能优化,tps从400+到4k+
项目介绍 路由网关项目watchman ,接收前端http请求转发到后端业务系统,功能安全验证,限流,转发. 使用技术:spring boot+ nreflix zuul,最开始日志使用slf4j+l ...
- MySQL数据文件的导入、导出
1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导 ...
- jQuery扩展两类函数(对象调用,静态调用)
作者:zccst 先看小例子: $(function(){ //扩展方式1-通过对新调用 $.fn.each1=function(){ console.log("hehehehe$.fn.f ...
- Bitmap 格式
源:Bitmap 格式 参考:bitmap文件格式 Bitmap是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),DDB已经基本停用. Bit ...
- POJ 2609 Ferry Loading
双塔DP+输出路径. 由于内存限制,DP只能开滚动数组来记录. 我的写法比较渣,但是POJ能AC,但是ZOJ依旧MLE,更加奇怪的是Uva上无论怎么改都是WA,其他人POJ过的交到Uva也是WA. # ...
- WeakHashMap和Java引用类型详细解析
WeakHashMap是种弱引用的HashMap,这是说,WeakHashMap里的key值如果没有外部强引用,在垃圾回收之后,WeakHashMap的对应内容也会被移除掉. 1.1 Java的引用类 ...