The article Chris provided as a comment było rozwiązaniem.
Wymagane jest obejście uwierzytelniania formularzy dla niektórych żądań i używanie zamiast tego podstawowego uwierzytelniania HTTP. Jest to obsługiwane przez program Outlook (i potencjalnie inne agenty, takie jak przeglądarki internetowe).
Uzyskuje się to za pomocą MADAM Http Module.
Kroki:
1> Przeczytaj artykuł, aby uzyskać podstawową wiedzę.
2> Zainstaluj Madame Nuget pakiet: PM> Instaluj-Pakiet pani
3> zaimplementować własną IUserSecurityAuthority:
np
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> dodaj następujący do konfiguracji sieci:
np .:
<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>
Uwaga 1:
<discriminator inputExpression="Request.Url" pattern="Calendar\.aspx" type="Madam.RegexDiscriminator"/>
... służy do identyfikacji, która żąda powinny by-pass uwierzytelniania formularzy i wykorzystać podstawowe uwierzytelnianie HTTP, odbywa się to z Regex, i można dodać wielokrotne dyskryminatory.
Uwaga 2:
<userSecurityAuthority realm="MADAM" provider="YourAppAssembly.MadamUserSecurityAuthority, YourAppAssembly"/>
.... gdzie można skonfigurować niestandardowe dostawcy uwierzytelniania (to znaczy gdzie sprawdzić poświadczenia przeciwko swojej DB).
Być może zajrzyj na tę stronę http://msdn.microsoft.com/en-us/library/aa479391.aspx –
Dzięki @ChrisMoutray. Skomponowałem odpowiedź na podstawie tego, co opisuje artykuł. –