当前位置: 首页 > 编程语言 > C#

通过NTLM共享模拟用户

时间:2023-04-10 11:21:20 C#

通过NTLM模拟用户我有一个具有两个安全级别的内部应用程序。面向客户端的应用程序的FormsAuthentication和管理界面的NTLM集成身份验证。通过使用FormsAuthentication类的方法创建正确的.ASPXAUTHcookie,我可以很容易地模拟客户端。但是,到目前为止,为NTLM生成HTTP身份验证标头超出了我的范围。当我找到这篇文章(http://msdn.microsoft.com/en-us/library/ms998358.aspx#paght000025_usingimpersonation)时我曾抱有希望,但后来我意识到它只创建了一个上下文来运行一段代码时间请求。我想切换整个会话,以便服务器认为我正在使用另一个域登录。我对我的帐户有管理权限,所以这不是乱搞或窃取域密码。有可能吗?谢谢。假设您有一个启用了表单身份验证的ASP.NET应用程序,登录表单是login.aspx,并且您的用户存储在数据库中。现在,您希望同时支持Forms和Windows身份验证。这是我所做的:对于表单身份验证,我使用SQL数据库,比方说用户表。我在此表中添加了一个名为WindowsUserName的新列,其中我将在COMPUTERUser表单中保存Windows用户的名称在login.aspx表单中,我添加了一个方法,该方法将发送显示登录窗口的响应:privatevoidActivateWindowsLogin(){Response.StatusCode=401;Response.StatusDescription="未经授权";响应.End();我在某处有一个类似Admin的链接在login.aspxPage_Load我添加了:if(Request.QueryString["use"]=="windows"){如果(windowsuser.Length==0)ActivateWindowsLogin();else{//从数据库获取由IIS验证的Windows用户的userId//我在.ASPXAUTHcookie中使用userIdvaruserId=GetUserIdForWindowsUser(windowsuser);if(userId>0)//userfound{//在这里我们获取User对象来检查角色或其他内容varuser=GetApplicationUser(userId);//在这里执行额外的检查并调用ActivateWindowsLogin()//以再次显示登录或重定向到访问被拒绝的页面。//如果一切正常,设置cookie并重定向FormsAuthentication.SetAuthCookie(userId.ToString(),错误的);Response.Redirect(FormsAuthentication.GetRedirectUrl(userId.ToString(),false),true);}else//没有找到用户ActivateWindowsLogin();}}else{//yourFormsauthroutine}GetUserIdForWindowsUser和GetApplicationUser是我的以上方法只是举例。以上就是C#学习教程:模拟用户通过NTLM分享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表侵权,请点击右边联系管理员删除。如需转载请注明出处: