2016-05-11 4 views
1

Kentico v9.0の一部のメディアライブラリ内のすべてのファイルへの不正アクセスを防止しようとしています。私は、Kenticoのロールメンバーシップとグローバル管理者のみを使って、特定のライブラリにアクセスするつもりです。直接URLアクセスからKenticoメディアライブラリファイルを保護する

私はここで公開ガイド続いている:Securing media librariesをし、正常に動作するようです:401.2での直接URLパスのアクセス結果 - 権限メッセージにかかわらず、利用者の認証状態とロールメンバーシップの。そして、私はメディアギャラリーのWebパーツを正しく設定して永久URLを提供しています。永久URLも期待通りに機能します。

しかし、別の要件があります。これは〜/ googlesitemap.xmlファイルを提供するためのものです。 Google Sitemaps、web.configファイルにsystem.webServer /モジュールのノードに属性を提供するために私に指示します:私はここで公開ガイドに続い

<modules runAllManagedModulesForAllRequests="true"> 
    ... 
</modules> 

しかし、私は上記を追加するとき、その後、任意の認証されたユーザーはできますフルURLに入力したメディアライブラリファイルにアクセスできます。これは、ロールメンバーシップに基づいたメディアライブラリアクセスの試みに違反します。他のロールのユーザーがファイルを取得できないようにしたいからです。

私は... 設定> URLとSEO> URLの書式>除外URLに除外URLとしての私のメディアフォルダのルートを追加することにより、再書き込みエンジンからすべてのメディアライブラリファイルを除外しようとしてい

が、この助けにはならない。

どのような提案も大歓迎です!

答えて

2

私が知る限り、runAllManagedModulesForAllRequests属性は、異なる拡張機能(.aspxとは異なる)に対してのみ必須です。 IIS 7以上を使用している場合は、web.configでこの属性を省略できます(sourceを参照)。

注:ASP.NET Webサイトでは、ルーティングをサポートするために以前はrunAllManagedModulesForAllRequestsの値をtrueに設定する必要がありました。ただし、IIS 7がService Packで更新されると、runAllManagedModulesForAllRequestsの値をfalseに設定するか、ASP.NETルーティングで作業するときに省略することができます。詳細については、MSDN WebサイトのASP.NETルーティングを参照してください。

簡単な修正:この属性をweb.configに追加しないでください。メディアギャラリー(権限)は必要に応じて動作します。

編集:私はあなたのための解決策を持っていると思います。 runAllmanagedModulesForAllRequests属性kills匿名認証の設定。認証が成功した後にKenticoがデータを提供するようにします。私は回避策を見つけたので、あなたはメディアライブラリへのアクセスを禁止することができます。 設定セクションの内側にあなたのweb.configファイルに

<location path="MySite/media/MyMediaLibrary"> 
    <system.web> 
      <authorization> 
       <deny users="*"/> 
      </authorization> 
    </system.web> 
</location> 

:ようなものを追加してみてください。

+0

しかし、私が言うように、〜/ sitemap.xmlには、拡張子が.aspxでないものを提供するという要件があります。あなたはそれがどちらか一方を選択するケースだと思いますか? – ne1410s

+0

拡張子が.xmlになるようにrunAllManagedModulesForAllRequests属性を使う必要はないと思います。 (私はあなたがIIS7以上を使用していると思います)。 –

+1

ええ、「〜/ sitemap」ページが実際にコンテンツツリー内に作成されている場合は、通常のドキュメントが必要になります。ファイルシステムから実際の物理ファイルを取得しようとしている場合は、それを必要とせず、IISが処理できます。 – Enn

関連する問題