Как добавить аутентификацию в ASP.NET размещенный ICS iCalendar для outlook
У меня есть ASP.NET приложение, которое динамически создает календарь ICS (использование День "Д".ческих библиотека), на который я могу подписаться из outlook. Все работает нормально, но мне нужно иметь возможность защитить календарь, чтобы только аутентифицированные пользователи могли получить к нему доступ. т. е. когда вы добавляете URL в календарь в outlook, он должен запросить имя пользователя и пароль.
помните, что молоко, похоже, реализовало то, что мне нужно, но я не могу найти какую-нибудь информацию о том, как добиться этого самому?
1 ответов
статью Крис предоставил в качестве комментария было решение.
что требуется, это обойти проверку подлинности форм для определенных запросов и вместо этого использовать базовую аутентификацию HTTP. Затем это поддерживается Outlook (и потенциально другими агентами, такими как веб-браузеры).
Это достигается с помощью мадам Http модуль.
действия:
1 > Прочитайте статью, чтобы получить базовое представление.
2> Установите пакет MADAM NuGet:PM > установить-пакет мадам
3 > реализовать свой собственный IUserSecurityAuthority:
Эл.г
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> Добавьте в веб-конфигурацию следующее:
например:
<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>
Примечание 1:
<discriminator inputExpression="Request.Url" pattern="Calendar\.aspx" type="Madam.RegexDiscriminator"/>
...используется для определения того, какие запросы должны проходить проверку подлинности форм и использовать базовую проверку подлинности HTTP, это делается с помощью Regex, и вы можете добавить множественные дискриминаторы.
примечание 2:
<userSecurityAuthority realm="MADAM" provider="YourAppAssembly.MadamUserSecurityAuthority, YourAppAssembly"/>
....где вы настраиваете свой пользовательский поставщик проверки подлинности (т. е. где вы проверяете учетные данные против своей БД).