我的客户有一个交换服务器,并为他的客户和合作伙伴提供免费的电子邮件帐户。他的客户需要通过登录名和密码访问一些Web应用程序,并且需要进行身份验证。
我考虑创建一个自定义的asp.net成员资格提供程序来命中交换而不是常规的aspnetdb存储。
有没有办法通过交换提供的电子邮件/用户名和密码对这些用户进行身份验证?
谢谢。答案 0 :(得分:1)
如果我没有弄错,则Exchange通过仅通过Active Directory进行身份验证。所以你不妨使用一些内置的LDAP身份验证机制。
如果您搜索ASP.NET LDAP Authentication
,已经有很多可行的方法然而,IMO,最简单的方法是简单地使用ASP.NET窗口身份验证模式:
<system.web>
...
<authentication mode="Windows"/>
...
</system.web>
加入将您的网站部署到与Exchange相同的域的计算机。当然会有更多的实施细节。但我认为这是最无痛苦的。
您可以访问当前用户的域信息,如下所示:
var user = (WindowsPrincipal)HttpContext.Current.User; // assume Windows auth.
注意:然而,在实施之前,应该对各种安全风险进行适当评估。
答案 1 :(得分:0)
我怀疑您在客户端控制的AD域中进行了身份验证。这个article应该有帮助
答案 2 :(得分:0)
通常,我会将ActiveDirectoryMembershipProvider与基于表单的身份验证结合使用。这将使用Exchange正在使用的相同Active Directory存储。在MSDN上有关于各种实现可能性的详细article。您也可以使用基于Windows的身份验证,如@chakrit建议的那样,但请注意,一旦您进行了身份验证,浏览器将在关闭之前保持身份验证状态 - 没有注销。 Windows身份验证的一个很好的功能是,如果站点位于Intranet或受信任的站点区域中,则永远不会提示您输入凭据。另一方面,当您登录时,您不希望任何人借用您的工作站。我只将它用于需要保护的东西,但不一定敏感 - 例如内部网站点。