gpt4 book ai didi

c# - ASP.Net MVC 中的 LDAP 身份验证

转载 作者:IT王子 更新时间:2023-10-29 04:18:49 25 4
gpt4 key购买 nike

我希望能够使用域用户 ID 和密码对用户进行身份验证,但默认的 ASP.Net MVC 应用程序允许用户注册用户 ID 和密码然后登录。我该怎么做?

我不希望用户能够注册;但是,他应该能够输入他的 Windows 域用户 ID 和密码,并由域服务器进行身份验证。

我见过的解决方案(例如 here on Mike's Blog)不要求用户输入他/她的 UserId 或密码。

如何让我的 ASP.Net MVC 应用程序显示登录表单并根据 Windows 域对用户进行身份验证?

如果可能,请用样本解释

最佳答案

这是在 Web 应用程序表单例份验证中执行此操作的方法,因此它可能需要针对 MVC 进行一些调整。使用 asp.net 成员资格和角色引擎。设置提供程序以使用 Active Directory 成员资格提供程序并使用表单进行身份验证。

<authentication mode="Forms">
<forms name=".ADAuthCookie"
timeout="10"
loginUrl="Login.aspx"
defaultUrl="Default.aspx">
</forms>

或者类似的东西....

提供者设置看起来像这样:

<membership defaultProvider="DomainLoginMembershipProvider">
<providers>
<add name="DomainLoginMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
connectionProtection="Secure"
connectionUsername="domainuser"
connectionPassword="pwd"
attributeMapUsername="sAMAccountName"
enableSearchMethods="false"/>
</providers>
</membership>

连接保护、用户名和密码是针对有权代表系统查询AD的帐户。根据您网络的安全性,这可能必须进行设置,否则您将无法查询 AD 来验证用户。

您的连接字符串将类似于:

<connectionStrings>
<add name="ADConnectionString"
connectionString="LDAP://servername:port#/DC=domainname"/>
</connectionStrings>

连接字符串可以采用多种形式,因此您可能需要针对您的环境研究它。

对于登录页面,您可能必须执行身份验证方法并测试...

    e.Authenticated = Membership.ValidateUser(username, password);
if (e.Authenticated == false)...

Stephen Shackow 的书“Professional ASP.Net 2.0 Security, Membership, and Role Management”很好地介绍了如何使用 AD 成员资格(第 12 章)。它不在 MVC 的上下文中,但配置和设置是相同的。

关于c# - ASP.Net MVC 中的 LDAP 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1401667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com