gpt4 book ai didi

c# - 如何为 Outlook 添加身份验证到 ASP.NET 托管的 ICS iCalendar

转载 作者:太空狗 更新时间:2023-10-29 21:22:53 24 4
gpt4 key购买 nike

我有一个 ASP.NET 应用程序,它动态创建一个 ICS 日历 ( using the DDay.iCal library ),我可以从 outlook 中订阅它。一切正常,但我需要能够保护日历,以便只有经过身份验证的用户才能访问它。即,当您将 URL 添加到 Outlook 中的日历时,它需要询问用户名和密码。

Remember The Milk seem to have implemented what I need ,但我似乎无法找到任何关于如何自己实现这一目标的信息?

最佳答案

The article Chris provided as a comment是解决方案。

所需要的是绕过某些请求的表单例份验证并改用基本 HTTP 身份验证。然后,Outlook(以及可能的其他代理,如网络浏览器)支持这一点。

这是通过使用 MADAM Http Module 实现的.

步骤:

1> 阅读文章以获得基本的理解。

2> 安装 MADAM NuGet 包:PM> Install-Package madam

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"/> 

....是您配置自定义身份验证提供程序的地方(即,您根据数据库检查凭据的地方)。

关于c# - 如何为 Outlook 添加身份验证到 ASP.NET 托管的 ICS iCalendar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17696034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com