克里斯提供的文章作为评论 http://msdn.microsoft.com/en-us/library/aa479391.aspx就是解决方案。
所需要的是对某些请求绕过表单身份验证并使用基本 HTTP 身份验证。 Outlook(以及可能的其他代理,如 Web 浏览器)将支持此功能。
这是通过使用MADAM Http 模块 http://www.raboof.com/projects/madam/.
Steps:
1> 阅读文章以获得基本了解。
2> 安装 MADAM NuGet 包:PM> 安装包女士
3> 实现你自己的用户安全机构:
e.g
public class MadamUserSecurityAuthority : IUserSecurityAuthority
{
public MadamUserSecurityAuthority()
{
}
//This constructor is required
public MadamUserSecurityAuthority(IDictionary options)
{
}
public object Authenticate(string userName, object password, PasswordFormat format, IDictionary options, string authenticationType)
{
if (_yourAuthenticationService.isValid(userName, password.ToString()))
return true;
//Returning null means the authentication failed
return null;
}
public string RealmName
{
get { return "MADAM"; }
}
}
4> 将以下内容添加到您的网络配置中:
eg:
<sectionGroup name="madam">
<section name="userSecurityAuthority" type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<section name="formsAuthenticationDisposition" type="Madam.FormsAuthenticationDispositionSectionHandler, Madam"/>
</sectionGroup>
<madam>
<formsAuthenticationDisposition>
<discriminators all="true">
<discriminator inputExpression="Request.Url" pattern="Calendar\.aspx" type="Madam.RegexDiscriminator"/>
</discriminators>
</formsAuthenticationDisposition>
<userSecurityAuthority realm="MADAM" provider="YourAppAssembly.MadamUserSecurityAuthority, YourAppAssembly"/>
</madam>
<httpModules>
<add name="FormsAuthenticationDisposition" type="Madam.FormsAuthenticationDispositionModule, Madam"/>
<add name="AuthenticationModule" type="Madam.BasicAuthenticationModule, Madam"/>
</httpModules>
Note 1:
<discriminator inputExpression="Request.Url" pattern="Calendar\.aspx" type="Madam.RegexDiscriminator"/>
...用于识别哪些请求应绕过表单身份验证并使用基本 HTTP 身份验证,这是通过正则表达式完成的,并且您可以添加多个鉴别器。
Note 2:
<userSecurityAuthority realm="MADAM" provider="YourAppAssembly.MadamUserSecurityAuthority, YourAppAssembly"/>
....是您配置自定义身份验证提供程序的位置(即根据数据库检查凭据的位置)。