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