2013-07-17 4 views
5

私はOutlook内から購読できるICSカレンダー(using the DDay.iCal library)を動的に作成するASP.NETアプリケーションを持っています。すべて正常に動作していますが、認証されたユーザーだけがアクセスできるようにカレンダーを保護する必要があります。つまり、OutlookのカレンダーにURLを追加するときは、ユーザー名とパスワードを尋ねる必要があります。ASP.NETホステッドICSに認証を追加する方法Outlook用のiCalendar

Remember The Milk seem to have implemented what I needしかし、私はこれを自分で達成するための情報を見つけることができないようですか?

+1

おそらくこれを見てくださいhttp://msdn.microsoft.com/en-us/library/aa479391.aspx –

+0

ありがとう@ChrisMoutray。この記事で説明している内容に基づいて回答を作成しました。 –

答えて

7

The article Chris provided as a commentが溶液であった。

必要なのは、特定の要求に対してフォーム認証をバイパスし、代わりに基本HTTP認証を使用することです。これは、Outlook(およびWebブラウザなどの潜在的に他のエージェント)によってサポートされています。

これは、MADAM Http Moduleを使用することによって実現されます。

ステップ:

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認証を使用し、これは正規表現を使って行われなければならない要求を識別するために使用され、あなたが追加することができます複数の弁別器。

注2:

<userSecurityAuthority realm="MADAM" provider="YourAppAssembly.MadamUserSecurityAuthority, YourAppAssembly"/> 

は....あなたがカスタム認証プロバイダを設定するところである(つまり、あなたのDBに対する資格情報をチェックしています)。

関連する問題