如何集成Windows login, forms集成验证?

ASP.NET Forms身份认证原理与生产级实践指南 Forms身份认证是ASP.NET中基于Cookie的轻量级认证机制,其核心在于通过加密票据(FormsAuthenticationTicket)在无状态HTTP协议上构建可信赖的用户身份上下文。它依赖machineKey进行对称加密与签名验证,利用slidingExpiration实现会话自动续期,并通过HttpContext.User完成认证与授权的解耦。该机制不依赖Session,具备高并发、低开销特性,广泛应用于政企内网、医保平台、教育系统等.NET Framework存量场景。本文深入解析Cook 阅读详情

最近打算给公司建立一个论坛,选择了dvbbs .net 开源版本. 但是又想运行在公司的域上。由于dvbbs肯定是forms验证,想改成双重验证.

使用Windows Active Directory登录,获取用户名,然后查询数据库得到数据。

小结论:所有的forms验证其实都集成了Windows login.

 

 

主要思路: 解决方案自动获取内网的Windows用户名,如果没有就把用户转到登录界面.

Forms 认证

首先确定使用哪一种ASP.NET认证. 由于ASP.NET只可以有一种认证类型,所以只能先选择一个. Windows认证只提供用户名,无论它是ASP.NET进程用户还是实际客户端用户(如果IIS被配置成为Disable匿名访问).所以只有Forms认证才可以根据需要自己定制.所以我们就要在web.config里面设置成:Forms认证. 所以必须保证我们的ASP.NET应用程序必须是IIS应用程序.另外必须在Web.config定义好Authorzation,即Deny匿名用户.

 

另外一般情况是Authentication Form把loginUrl设置成为Login.aspx,但是由于我们必须使用集成Windows安全, 所以就不能使用logon页,所以我们的loginUrl就必须是使用集成Windows安全的页面,我们设置成为WinLogin.aspx.

IIS Windows Security

 

接着我们就要在WinLogin.aspx里面来处理windows集安全。它包括拒绝匿名用户,获得客户端Windows证书, 获得客户端Windows用户名,以及 连接上Forms认证. 另外还要处理Windows安全失败的情况. 注意WinLogin.aspx中不可以有html. 它只是一个windows集安全测试.

 

首先我们拒绝匿名用户,获得客户端Windows证书.

 

打开IIS管理器,右击WinLogin.aspx文件, 点击属性, 选择文件安全 标签: 去掉 使用匿名登录选项, 选择集成Windows认证选项.

这样做还不能自动得到用户名,我们还需要使用页面跟踪, 或者使用反编译器,在WindowsAuthenticationModule中的OnEnter方法. 用户名的服务器变量名叫LOGON_USER, Request.ServerVariables["LOGON_USER"]

再调用FormsAuthentication.RedirectFromLoginPage 来进入Forms认证. 这个方法设置了认证Cookie,并且转到原来的page. 

 

 

IIS Custom 401 错误

如果你只想使用集成Windows安全的话,这就够了,但是你还要处理集成安全失败的情况,这就要把他们转到你自定义的登录界面来获得用户证书.集成Windows安全会因为用户浏览器的不同而不同。非IE浏览器会给用户一个登录框,这时用户就可能会选择取消,这样就会造成集成Windows安全失败.

 

这时用户就会得到一个401错误.  通常ASP.NET会内置功能在web.config文件中来获得和并且重新转向. 可惜 401, 403 并不包括在内,所以必须用其它方法来解决. 再一次提醒,必须使用IIS. 通过发送401状态错误代码来触发认证,以避免需要IIS来处理401错误.

 

 

打开IIS管理器,右击WinLogin.aspx文件, 点击属性, 选择文自定义标签:编辑不同的401错误,并且做好自定义的重新转向. 可惜,重新转向必须是一个静态文件, 而且是全物理地址, 这个文件包括javacript,meta标签,再重定向到真正的ASP.NET登录Form, 我们定义成为WebLogin.aspx.

注意此时失去了原来的ReturnUrl,因为IIS错误的重定向只能使用静态文件,以此这留待以后处理.

Forms Custom Logon

下一步就是建立通常的Forms认证(WebLogin.aspx). UI至少应该包含两个textboxes和一个submit,。通过相应的代码(在此你可以选择一些自定义的角色或者windows组),你可以获得一个已经认证通过的用户和用户名.  我们再call FormsAuthentication.RedirectFromLoginPage 来再一次登录 Forms 认证. 但是由于我们之前已经失去了ReturnUrl,所以我们必须另外设置认证Cookie:FormsAuthentication.SetAuthCookie, 然后手工再转向到原来的ReturnUrl。 大功告成?No,你会发现你还是会重新回到WinLogin.aspx.  所以我们可以直接转到WebLogin.aspx . 你目前还没有需要要的Permission. 此时你可以选择建立Forms认证并且把authorization设置成为:拒绝匿名用户。这样就可以让用户有权限访问loginUrl,在此就是WinLogin.aspx. 所以我们还要订明WebLogin.aspx 可以允许匿名用户(使用location).

 

OK,大功告成。

 

参考链接:

  1. Mixing Forms and windows security in ASP.NET http://msdn.microsoft.com/en-us/library/ms972958 
  2. 如何在ASP.NET中使用System.DirectoryServices名称空间

    http://support.microsoft.com/kb/329986/zh-cn 

  3. ASP.NET Windows集成Forms验证登陆 http://zhidao.baidu.com/question/154450260

 

基于Simulink进行步进电机的重复控制仿真建模 重复控制概述目的:通过引入一个周期延迟环节来补偿系统的周期性误差,从而提高系统对周期性参考信号或扰动的跟踪性能。方法内部模型原理:在控制器中嵌入一个与周期性信号相关的模型(例如周期延迟环节),以实现对周期性误差的零稳态误差控制。滤波器设计:为了避免高频噪声放大,通常会在重复控制器中加入低通滤波器。优势对周期性信号具有良好的跟踪性能。不需要精确的数学模型即可实现高性能控制。挑战:需要合理设计重复控制器的参数以避免系统不稳定。 阅读详情

相关推荐

禾赛XT16 vs XT32激光雷达实测对比:选16线还是32线?看完这篇不纠结

本文深度评测禾赛XT16与XT32激光雷达的性能差异与应用选择。通过实测数据对比,分析16线与32线激光雷达在点云密度、动态场景适应性及与IMU协同工作等方面的表现,帮助用户根据自动驾驶、机器人等不同应用场景做出最优选型决策。

table的专栏 944

Asp.net集成Windows域账户登陆

- 最近领导让修改一个asp小系统,由于自己对asp.net比较熟悉而对asp很是陌生!虽然asp的源代码也有,只是修改一下实现CRUD即可,但也是很痛苦的一件事啊!于是一上午都在看代码,郁闷ing.由于公司的电脑都是在域中(Microsoft的外包公司,域名就不说了,估计很多都知道的,哈哈),于是突发奇想,能不能通过AD中用户和密码对系统进行身份验证呢?经过Google总算搜出一篇文章来(还是...

weixin_30832143的博客 295

以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍

网络设备中肯定离开不MAC和PHY,本篇文章将详细介绍下以太网中一些常见术语与接口。 MAC和PHY结构 从硬件角度来看以太网是由CPU,MAC,PHY三部分组成的,如下图示意: 上图中DMA集成在CPU,CPU,MAC,PHY并不是集成在同一个芯片内,由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑到芯片面积及模拟/数字混合架构的原因,**将MAC集成进CPU而将PHY留在片外,这种...

sternlycore的博客 13万+

Form验证模式和Windows 验证模式

续.....

风华正茂 1082

【自适应滤波】自适应UKF,基于新息自适应调节Q和R,场景为雷达跟踪与滤波、MATLAB实现

本文提出了一种基于新息协方差匹配的自适应UKF(CM-AUKF)算法,用于解决噪声统计未知或时变场景下的目标跟踪问题。通过实时调整过程噪声协方差Q和观测噪声协方差R,CM-AUKF显著提升了跟踪精度和稳定性。仿真结果表明,相比传统UKF,CM-AUKF在位置和速度估计误差上分别降低了约50%和30%,且无需人工调参。该算法适用于无人机导航、雷达跟踪等动态环境,MATLAB代码可直接运行复现结果。自适应曲线显示算法能有效收敛到真实噪声参数,验证了其自适应能力。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 329

国产上位机软件突围:适配统信UOS/麒麟OS的跨平台开发技术与实践(2026年信创实战指南)

(航天科技集团CTO):“在信创战场上,1ms的延迟意味着1个卫星的控制失效。2026年,C#/.NET MAUI不是选择,而是我们守护卫星的‘生命线’。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 406

MVC .NET4 IE10下FormsAuthentication.SetAuthCookie无效的问题

MVC .NET4 IE10下FormsAuthentication.SetAuthCookie无效的问题

fddqfddq的专栏 3496

精密装配机器人系列编程:ABB IRB 120_(20).编程项目设计与实施

在精密装配机器人系列编程中,项目的成功设计与实施涉及多个关键步骤。从项目需求分析到最终调试,每一个环节都需要细致的考虑和专业的技术。选择合适的编程语言、设计良好的程序结构、掌握调试技巧以及解决常见问题,都是确保机器人高效、稳定运行的重要因素。通过不断优化和改进,可以提高生产效率和产品质量,满足不断变化的生产需求。

zhubeibei168的博客 1243

出现 authentication mode Windows / 错误解决办法

出现 authentication mode Windows / 错误解决办法

gdruhv的博客 3944

多个linux系统安装到一块硬盘(Kylin+UOS+ubuntu)

之前写过一篇类似的文档,笔者把kylin和UOS安装在一块硬盘上上一篇的文档地址多个linux系统安装到一块硬盘(Kylin+UOS)_银河麒麟系统和uos安装成双系统-优快云博客本次记录的是三个系统到一块硬件上银河麒麟:Kylin-Desktop-V10-SP1-Release-2107-arm64统信:uniontechos-desktop-20-professional-1050-arm64乌班图:ubuntu-22.04.5-live-server-arm64。

aggs1990的专栏 565

下载MNIST数据集并使用python将数据转换成NumPy数组(源码解析)

下载MNIST数据集并使用python将数据转换成NumPy数组首先来分析init_mnist函数接下来继续分析load_mnist函数实现数据集转换的python脚本的代码显示MNIST图像并确认数据 下载MNIST数据集并将数据转换成NumPy数组的Python脚本里面最重要的就是load_mnist函数,其他项目想要调用数据集的话,就可以调用load_mnist函数,得到一个字典类型的数据,字典的值是一个Numpy数组。 这些过程是如何实现的,现在开始逐字逐句分析源码: 在load_mnist函数中第

及时总结 4267

ASP.NET2.0驗證機制

概要: ASP.NET 提供了基于角色(即 Roles)的认证机制,然而它对角色的支持是不完全的。本文试图通过一些例子来说明如何实现和使用这种基于角色的认证机制。 简介:ASP.NET 中窗体认证是一个功能非常强大的特性,只需要很少的代码就可以实现一个简单的平台无关的安全认证系统。 但是,如果你需要一个更复杂更有效的认证机制,那么你就要把众多用户分成用户群组,以利用它的灵活性。Wind

633

AI原生SaaS应用的自动化运维体系构建

随着ChatGPT掀起的AI原生应用浪潮,越来越多SaaS(软件即服务)产品开始以"AI优先"的方式设计——从用户交互到核心功能,都深度依赖机器学习模型(如推荐算法、智能客服)、实时数据流(如用户行为分析)和弹性算力(如大模型推理)。这类应用的运维需求与传统SaaS完全不同:传统运维像"修水管",哪里漏了补哪里;AI原生运维则像"照顾会成长的宠物",需要实时感知模型状态、数据变化和流量波动,主动调整资源。

AI天才研究院 1079

c#使用forms实现helloworld和login登录

step1:登录 C:\Users\wangrusheng\RiderProjects\WinFormsApp1\WinFormsApp1\Form1.cs。c#使用windows forms app实现helloworld和login登录。

cf8833的博客 362

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

login登录web配置

首先明确该文要实现的功能是:当你网站中存在用户名和密码登陆情况:如果你未登录直接复制页面地址回车进入页面时,这时就起作用了。你这时session、cookia等等存储该用户名是空的则自动进入登陆界面。 再也不用你一个一个页面添加 if(session["username"]==null) { Response.Redirect="login.aspx"; } 大家说是不是方便多了。下来我们就一起学习一下这个小技巧: 在webconfig中有一个重要节点 <system.web>.

w1824575989的博客 2810

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

EXCHANGE客户端访问服务器(CAS)中的身份验证方式

1.ASP.NET模拟 当此模式启用后,应用程序可以运行在以下两种不同的上下文中:通过IIS身份验证的用户或者使用设置的任意账户。如果使用匿名身份验证并选择作为已通过身份验证的用户运行ASP.NET应用程序,则应用程序通过匿名用户运行。如果选贼在任意账户下运行,则运行在为该账户设置的任意安全上下文中。 2.FORMS身份验证(表单身份验证) 该模式下用户在应用程序级别管理客户端的注册以及验证,不依赖IIS身份验证机制。 登陆信息以明文方式进行传输。 3.windows身份验证 NTLM 此验证凡是比..

qq_34823218的博客 851

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Asp.Net安全验证小结

1,基于windows的安全验证 web.config文件:                                                                      在.aspx文件中无需任何代码就可以实现验证,但可以在.aspx文件获取登陆用户的信息  需导入命名空间:System.Security.Principal  if(User.Identity.IsA

kwklover 1913

使用ASP.NET中的Login控件

介绍ASP.net中Login控件几个应用

hongdi也IT 4444

ASP.NET FROMS验证出现的小问题解决过程

1。登录页面LOGIN.ASPX.CS 中将用户的信息写入了CONTEXT.USER //把当前用户对象实例赋给Context.User,这样做将会把完整的用户信息加载到ASP.NET提供的验证体系中 Context.User = newUser; 2.在验证完毕后将用户信息打印出 string aaa = Context.User.Identity.Name; 结果发现始

jiayue's BLOG 3595

ASP.NET Forms验证(自定义、角色提供程序)

以前开发项目时经常是自己开发一套用户权限管理系统进行验证,比较灵活。最近为了单点登录的问题又把Asp.Net自带的验证方式看了一遍,发现这种方式也比较方便,功能也还可以。在Asp.Net提供了三种常用的验证方式:Windows方式是和IIS结合起来可以实现基本、摘要、集成 Windows等身份验证;Passport方式是使用Windows Live ID的帐户来进行统一验证的;Fo...

168

windows+登录oracle,Oracle表单11g获取Windows用户登录(Oracle forms 11g get windows user login)...

Oracle表单11g获取Windows用户登录(Oracle forms 11g get windows user login)如何在我的Windows客户端的Oracle Forms 11g中获取Windows用户登录或Windows环境变量(而不是从应用程序服务器)?真诚的克里斯how can I get the windows user login or Windows environme...

weixin_42577735的博客 352

Login_Form.cs 完整代码总结

好的!我给你写一份的完整代码,你直接覆盖原来的就行。

qq_55207218的博客 234

ASP.NET Forms身份认证原理与安全实践

Forms身份认证是ASP.NET中基于Cookie的声明式认证机制,其核心在于通过加密票据(FormsAuthenticationTicket)在HTTP无状态环境中建立可信会话。它依赖machineKey密钥进行AES/HMACSHA256加解密,确保票据不可伪造、不可篡改;结合HttpOnly、Secure、slidingExpiration等配置实现基础安全防护。该机制虽被现代JWT替代,但在政府、金融等遗留系统中仍广泛用于可控、稳定的身份边界管控,尤其适用于需深度定制用户数据(userData)、

xiang_fu的博客 438

Xamarin.Forms测试驱动开发实战:单元测试与UI测试完整流程

测试驱动开发(TDD)是一种以测试为先导的软件开发方法,其核心“红-绿-重构”循环要求开发者在编写功能代码前先定义测试用例。这一实践通过强制从使用者角度思考,能够产出更清晰、耦合度更低的代码,从而提升软件质量与可维护性。在移动跨平台开发领域,面对iOS、Android等多平台适配的复杂性,TDD结合自动化测试的价值尤为凸显。单元测试专注于验证ViewModel、Service等核心业务逻辑的一致性,而UI测试则模拟真实用户操作,确保界面交互与布局的正确性。两者共同构建了从内到外的质量防护网,特别适用于Xam

weixin_34293141的博客 598

用C#写一个简单的Login窗口

最近,看到网上经常会问如何进行窗口跳转,大多数的问题都是牵扯到Login窗口。其实,在Visual Studio 6以来,比较正确的做法,是判断Login窗口的返回值,然后决定是否打开主窗体,那么在C#中也是一样的。 具体做法如下:首先,创建Login窗口,然后添加相应的输入框和按钮,设置窗口的AcceptButton为窗体的确认按钮,而CancelButton为窗体的取消按钮。f

4242
下一篇: vs2005先新建个解决方案,在添加类库项目,怎么总是类库不再解决方案下面
爱德华马
博客等级 码龄19年 22粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值