标签: windows-authentication

将表单身份验证与Windows身份验证混合

我有一个(ASP.NET 3.5)Intranet应用程序,它被设计为使用表单身份验证(以及默认的aspnet成员资格系统).我还在另一个表中存储有关用户的其他信息,该表与aspnet_users表共享其主键.

对于属于我们域的用户,我将其域帐户名存储在辅助用户表中,并且我希望自动登录其域帐户名与存储在表中的名称匹配的用户.

我已经阅读了可用的指南 - 它们都来自两年或更长时间,并且假设您能够在单独的登录页面上激活Windows身份验证,该页面允许您提取域帐户名称.但是,据我所知,这在IIS7中是不可能的(整个身份验证方法适用于所有页面,无法有选择地停用,并且两种身份验证方法都不能应用于同一页面).

有没有办法让IIS通过请求用户的Windows域帐户名?我不需要正确的AD身份验证,只需要域名.

asp.net iis-7 forms-authentication windows-authentication

49
推荐指数
1
解决办法
6万
查看次数

ASP.NET Windows身份验证注销

如何在ASP.NET中使用Windows身份验证时注销,如此web.config?

<authentication mode="Windows" />
Run Code Online (Sandbox Code Playgroud)

我已经尝试过以下尝试失败了.它重定向,但不会注销用户.

void logoutButton_Click(object sender, EventArgs e) {
    HttpContext.Current.Session.Clear();
    HttpContext.Current.Session.Abandon();
    ViewState.Clear();
    FormsAuthentication.SignOut();
    Response.Redirect("/");
}
Run Code Online (Sandbox Code Playgroud)

背景资料:

我必须使用Windows身份验证,因为我需要使用Active Directory模拟身份以获取对本地文件的访问权限.而且我无法模仿使用Forms身份验证,因为它HttpContext.Current.User.Identity不会是一个WindowsIdentity. 使用表单身份验证进行模拟

asp.net windows-authentication logout

48
推荐指数
4
解决办法
8万
查看次数

使用Python通过Windows身份验证连接到MS SQL Server?

如何使用Windows身份验证将MS SQL Server与pyodbc库连接?

我可以通过MS Access和SQL Server Management Studio连接,但无法获得Python的工作连接ODBC字符串.

这是我尝试过的(也没有'Trusted_Connection=yes'):

pyodbc.connect('Trusted_Connection=yes',
               driver='{SQL Server}', server='[system_name]',
               database='[databasename]')

pyodbc.connect('Trusted_Connection=yes', uid='me',
               driver='{SQL Server}', server='localhost',
               database='[databasename]')

pyodbc.connect('Trusted_Connection=yes',
               driver='{SQL Server}', server='localhost',
               uid='me', pwd='[windows_pass]', database='[database_name]')

pyodbc.connect('Trusted_Connection=yes',
               driver='{SQL Server}', server='localhost',
               database='[server_name]\\[database_name]')

pyodbc.connect('Trusted_Connection=yes',
               driver='{SQL Server}', server='localhost',
               database='[server_name]\[database_name]')

pyodbc.connect('Trusted_Connection=yes',
               driver='{SQL Server}',
               database='[server_name]\[database_name]')
Run Code Online (Sandbox Code Playgroud)

sql-server odbc windows-authentication pyodbc sql-server-2008-r2

46
推荐指数
3
解决办法
7万
查看次数

ASP.NET MVC - 针对Active Directory对用户进行身份验证,但需要输入用户名和密码

我正在开发一个MVC3应用程序,需要用户对AD进行身份验证.我知道MVC3中有一个选项可以创建一个Intranet应用程序,可以根据AD自动对用户进行身份验证,但它使用Windows身份验证并自动登录.可以在"开放"工作站上访问此应用程序,用户需要输入其域用户名和密码.任何示例或在线教程都会很棒.一个示例项目将是例外.

asp.net-mvc forms-authentication windows-authentication asp.net-mvc-3 asp.net-mvc-2

44
推荐指数
2
解决办法
4万
查看次数

身份验证失败,因为远程方在从Web服务获取响应时已关闭传输流异常

我正在调用第三方服务,当我要求回复时,它会抛出一个异常

"身份验证失败,因为远程方已关闭传输流异常".

我认为发送凭据存在问题.我甚至尝试过提供新的凭据.这是完整的代码

string get_url = "https://**.*******.com/com/******/webservices/public_webservice.cfc?wsdl&Method=CreateUser&SiteID=**&WSPassword=******&UserName=******";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(get_url);
request.MaximumAutomaticRedirections = 4;
request.MaximumResponseHeadersLength = 4;
request.Credentials = CredentialCache.DefaultCredentials;
//request.UseDefaultCredentials = false;
//request.Credentials = new System.Net.NetworkCredential("*****", "*****");
request.ContentType = "application/x-www-form-urlencoded; charset=ISO-8859-1";

// Show the sent stream
//lbl_send_stream.Text = send_stream;
//lbl_send_stream.Text = get_url;
// Get UserId And LoginToken From Third Party DB
// ==============================================
//Exception gets throwed When code hits here
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

c# web-services windows-authentication httpwebresponse

43
推荐指数
1
解决办法
4万
查看次数

Windows身份验证无法在本地IIS 7.5上运行.错误401.1

我最近有一个令人讨厌的问题,让Windows身份验证在IIS 7.5(Windows 7 Pro)的本地实例上运行到ASP.net 4.0站点.我按照基本步骤.

IIS身份验证

  • 禁用匿名身份验证
  • 启用Windows身份验证

编辑web.config

<authentication mode="Windows" />
Run Code Online (Sandbox Code Playgroud)

这在启用Windows身份验证方面做得很好但是每次登录尝试都被拒绝并最终返回401.1错误.这就是问题的起源.似乎有很多原因可以在Web上详细记录,包括Stack Overflow.

我试过了:

  • 编辑IIS身份验证Windows身份验证的"高级设置"以禁用扩展保护和内核模式身份验证
  • 编辑IIS身份验证'提供程序'以将NTLM移动到Negotiate之上.
  • 编辑IIS .NET授权规则以明确允许用户(以及各种其他组合).
  • 各种IIS命令行脚本和调整.
  • web.config文件中的各种配置调整.
  • 甚至一些文件系统权限调整.

但一切都无济于事,可怕的401.1仍然存在.

这确实是"看不见树木"的案例.我设法找到的所有解决方案(如果你愿意,都称之为糟糕的搜索参数)都没有为我工作,所以我认为值得发布这个问题,希望能提供一个明确的答案,对于遇到同样问题的人来说更容易找到.

c# windows asp.net iis windows-authentication

42
推荐指数
2
解决办法
3万
查看次数

ASP.NET身份+ Windows身份验证(混合模式 - 表单+ Windows)

在提出这个问题之前,我已尽力搜索网页.我已经在stackoverflow上看到了类似的问题,但是,很长一段时间没有人满意地回答.这是再次尝试解决这个反复出现的问题.

问题

如何构建一个ASP.NET MVC 5网站,它为Intranet用户使用"Windows Auth",为Internet用户使用"Forms Auth"?我们希望使用ASP.NET Identity来实现这一目标.此外,我们不希望使用Active Directory组进行授权.对于Intranet用户,我们希望使用Active Directory对它们进行身份验证,然后回退到ASP.NET Identity以管理其角色和其他配置文件数据.

如果我们不要求最终用户选择auth方法,那就太好了.Web应用程序应无缝地登录Intranet用户.他们甚至不应该知道有登录屏幕.同样,不应要求互联网用户输入其域名凭据.他们应该立即看到基于表单的登录屏幕.

有没有推荐的解决方法?或者你可以评论以下任何一个是否是正确的解决方案?

http://world.episerver.com/blogs/Dan-Matthews/Dates/2014/8/Mixing-Forms-and-Windows-Authentication/

https://github.com/MohammadYounes/MVC5-MixedAuth

http://mvolo.com/iis-70-twolevel-authentication-with-forms-authentication-and-windows-authentication/

仅供参考这是2004年的文章,现在可能没什么用处:https: //msdn.microsoft.com/en-us/library/ms972958.aspx

asp.net asp.net-mvc windows-authentication asp.net-identity

40
推荐指数
2
解决办法
2万
查看次数

启用Windows身份验证的IIS中的CORS请求的401响应

我正在尝试在我的WebAPI项目中启用CORS支持,如果我启用匿名身份验证,那么一切正常,但是使用Windows Auth +禁用匿名身份验证,发送的OPTIONS请求始终返回401未经授权的响应.请求它的站点位于DOMAIN上,因此应该可以进行呼叫,有没有办法解决问题而不禁用Windows身份验证?

ntlm windows-authentication iis-7.5 cors asp.net-web-api

38
推荐指数
6
解决办法
4万
查看次数

无法使用HttpClient对ASP.NET Web Api服务进行身份验证

我有一个ASP.NET Web API服务,它在启用了Windows身份验证的Web服务器上运行.

我有一个基于MVC4构建的客户端站点,它运行在同一Web服务器上的不同站点上,该站点使用HttpClient从服务中提取数据.此客户端站点在启用身份模拟的情况下运行,并且还使用Windows身份验证.

Web服务器是带有IIS 7.5的Windows Server 2008 R2.

我遇到的挑战是让HttpClient通过当前的Windows用户作为其身份验证过程的一部分.我已经以这种方式配置了HttpClient:

var clientHandler = new HttpClientHandler();
clientHandler.UseDefaultCredentials = true;
clientHandler.PreAuthenticate = true;
clientHandler.ClientCertificateOptions = ClientCertificateOption.Automatic;
var httpClient = new HttpClient(clientHandler);
Run Code Online (Sandbox Code Playgroud)

我的理解是,在启用了身份模拟的情况下运行站点,然后以这种方式构建客户端应该导致客户端使用当前登录用户的模拟身份对服务进行身份验证.

这不会发生.事实上,客户端似乎根本没有进行身份验证.

该服务配置为使用Windows身份验证,这似乎完美.我可以在我的网络浏览器中访问http:// server/api/shippers并提示进行Windows身份验证,输入后我会收到请求的数据.

在IIS日志中,我看到收到的API请求没有进行身份验证并收到401质询响应.

关于这个的文档似乎很少.

我需要深入了解可能出现的问题或使用此应用程序使用Windows身份验证的其他方法.

谢谢,克雷格

windows-authentication iis-7.5 wcf-web-api asp.net-mvc-4 asp.net-web-api

37
推荐指数
2
解决办法
3万
查看次数

如何在C#中获取当前用户的Active Directory详细信息

我正在使用一个使用Windows身份验证的C#和ASP.Net应用程序.

即在Web.config中:

<system.web>
    <authentication mode="Windows" />
</system.web>
Run Code Online (Sandbox Code Playgroud)

我想从Active Directory获取当前用户的详细信息(全名,电子邮件地址等).


我可以SOMEDOMAIN\someuser通过使用获得他们的Windows 2000用户登录名(例如:)

string username = HttpContext.Current.Request.ServerVariables["AUTH_USER"];
Run Code Online (Sandbox Code Playgroud)

我已经使用他们当前的登录名(而不是他们的Windows 2000用户登录名)为用户制定了LDAP查询:

DirectorySearcher adSearch = new DirectorySearcher(
        "(userprincipalname=someuser@somedomain.com.au)");
SearchResult adSearchResult = adSearch.FindOne();
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何使用他们的前W2K登录名为用户搜索AD,或者以'someuser@somedomain.com.au'格式获取他们的登录名.

有任何想法吗?

.net c# ldap active-directory windows-authentication

36
推荐指数
3
解决办法
13万
查看次数