【问题标题】:ActiveDirectoryMembershipProvider not accepting FQDNActiveDirectoryMembershipProvider 不接受 FQDN
【发布时间】:2010-07-29 09:29:01
【问题描述】:

我们正在尝试为 ASP.NET Intranet 应用程序设置 ActiveDirectoryMemebershipProvider,该应用程序应该在用户在浏览器中访问时自动将其登录到应用程序。

但是,浏览器将 FQDN (MYDOMAIN\some.user) 发送到服务器,而 ActiveDirectoryMemebershipProvider 似乎无法根据 FQDN 找到用户。然而,当我们从代码中手动测试提供者时,我们发现如果我们只尝试用户名 (some.user),提供者似乎能够找到用户。

是否有任何设置或任何我们可以用来让提供者跳过从浏览器发送的域部分的设置或任何东西?

【问题讨论】:

    标签: active-directory ldap single-sign-on activedirectorymembership


    【解决方案1】:

    如果您还没有设置 atttributeMapUsername,请尝试设置,如果这对您有用,请告诉我。当我没有设置这个时,我必须以some.user@my.ldap.domain 格式指定我的用户。

    我的网站配置

        <add name="MyADMembershipProvider"
             type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ADConnectionString"
             attributeMapUsername="sAMAccountName"
             enablePasswordReset="false" maxInvalidPasswordAttempts="1" passwordAttemptWindow="15" 
             passwordAnswerAttemptLockoutDuration="1" minRequiredNonalphanumericCharacters="0" attributeMapEmail="mail"
             />
    

    【讨论】:

    • 您好,感谢您的回复。我们正在尝试使用自动登录,浏览器将用户名发送到服务器。据我们所知,IE 将以 MYDOMAIN\my.username 格式发送用户名。 ActiveDirectoryMembershipProvider 似乎不接受这一点。至少它不会以这种方式找到任何用户。我尝试将 attributeMapUsername 设置为 sAMAccountName 但它似乎没有多大帮助
    • 我可以看看你的代码吗?您是否使用 IIS 的设置进行身份验证?您可以选择 Windows 用户身份验证并禁用匿名用户,这是我们有时在这里所做的。这样您就可以从 CGI 变量中提取用户登录信息,根据需要对其进行格式化,然后通过您的身份验证例程运行它。
    【解决方案2】:

    在 IIS 中,转到网站的属性并将默认域设置为“\”。不确定您使用的是哪个版本的 IIS,所以如果 IIS 在您身上重置此设置,另一种方法是简单地预先添加域部分,以便自动添加它?

    这是您正在使用的自定义应用程序还是产品?试图理解为什么它是从代码而不是从应用程序中工作的。如果您编写了应用程序,我假设您可以更改它以模仿您的代码。如果您没有编写应用程序,那是什么?应用程序(例如 OWA 或 SharePoint)可能具有它希望完成此操作的自定义方式。

    【讨论】: