ストックMSフォーム認証とSqlRolesProviderを使用して、IIS7(Server '08)で実行されているASP.NET 3.5アプリケーションに取り組んでいます。(私はaspnet_regsqlツールを使用してテーブルを生成しました)。
SysAdmins、AppAdmins、Users の 3 つの役割があります。すべてのユーザーはユーザーに属し、ユーザーは SysAdmins、AppAdmins、またはその両方に属することができます。
SysAdmins および AppAdmins に含まれていないユーザーへのアクセスをブロックする管理ディレクトリを取得できないようです。ログインしているすべてのユーザーを許可するか、誰も許可しません。
現在の構成の関連ビットは次のとおりです。
<configuration>
...
<system.web>
<authentication mode="Forms">
<forms loginUrl="/client/security/login.aspx" timeout="480" />
</authentication>
<authorization>
</authorization>
<roleManager defaultProvider="SqlRoleProvider" enabled="true" cacheRolesInCookie="true" cookieName="EquityTouch.Roles" cookieProtection="All" cookieSlidingExpiration="true" cookieTimeout="60">
<providers>
<clear />
<add name="SqlRoleProvider" applicationName="EquityTouch" connectionStringName="SQLProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
...
</system.web>
<system.webServer>
<security>
<authorization>
<add accessType="Deny" users="?" />
</authorization>
</security>
...
</system.webServer>
<location path="admin">
<system.webServer>
<security>
<authorization>
<remove users="*" roles="" verbs=""/>
<add accessType="Allow" roles="SysAdmins,AppAdmins" />
</authorization>
</security>
</system.webServer>
<system.web>
<authorization>
<deny users="*"/>
<allow roles="SysAdmins,AppAdmins"/>
</authorization>
</system.web>
</location>
</configuration>
この構成は現在、すべての人をブロックしていると思います。誰もブロックしない同様の構成を行いました。
問題は、system.web セクションと system.webserver セクションの両方を使用することにあると思われます。この構成を正しく機能させるための助けをいただければ幸いです。
アップデート
<location> 要素から <system.webServer> セクションを削除すると、そのフォルダー内の .aspx ページが正しく返されます。残念ながら、そのフォルダー内の .js ファイルはまだすべてのユーザーに対してブロックされています...理想的には、特権のない目から .js ファイルもロックしたいと思います。だから私はまだ助けを求めています。