2009-09-22 2 views
3

증권 MS Forms 인증 및 SqlRolesProvider를 사용하여 IIS7 (Server '08)에서 실행되는 ASP.NET 3.5 응용 프로그램에서 작업하고 있습니다. (테이블을 생성하기 위해 aspnet_regsql 도구를 사용했습니다).ASP.NET 3.5 IIS7 역할 보안 구현

세 가지 역할 : SysAdmins, AppAdmins 및 Users가 있습니다. 모든 사용자는 사용자이고 사용자는 SysAdmins, AppAdmins 또는 둘 모두에있을 수 있습니다.

SysAdmins 및 AppAdmins가 아닌 사용자에 대한 액세스를 차단하는 Admin 디렉토리를 얻을 수없는 것 같습니다. 그것은 로그인 한 모든 사용자 또는 아무도 허용하지 않습니다. 나는 현재이 구성 블록 모두를 생각

<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 섹션을 모두 사용하는 것으로 의심됩니다. 이 구성이 제대로 작동하는 데 도움이 될 수 있으면 크게 감사하겠습니다.

UPDATE

> 요소는 해당 폴더의 .ASPX 페이지가 제대로 반환하게 < 위치에서 <의 system.webServer > 섹션을 제거! 안타깝게도 해당 폴더의 .js 파일은 여전히 ​​모든 사용자에게 차단되어 있습니다. 이상적인 점은 .js 파일을 비공개 눈으로 잠그고 싶습니다. 그래서 나는 아직도 도움을 찾고 있습니다.

+0

이 같은 문제 : http://stackoverflow.com/questions/991045/asp-net-authentication-with-roles-in-iis7-integrated-mode-for-static-content – Toby

답변

6

IIS7 통합 파이프 라인 모드에서도 이전 IIS6 스타일 인증 블록을 성공적으로 사용하고 있습니다. 다음 변경 사항이 포함 된 아래 코드를 시도하십시오.

  1. 추가 사용자 : < 거부 ​​사용자 = "?" 제 승인 블록
  2. 행/>는 <의 순서 > 및 < 통해 JS 파일을 허용하기 위해 위치 기반 인증 블록
  3. 제거 <의 system.webServer > 위치 별 승인 블록
  4. 의 > 거부 ​​허용 스위치드 내 최선의 조언은 별도의 폴더로 이동하고 익명 이외의 모든 사용자가 해당 폴더에 액세스 할 수 있도록 허용하는 것입니다 (아래 참조). 또는 위치의 경로 속성에서 각 js 파일의 이름을 지정할 수 있습니다. 그러나이 솔루션은 유지 관리가 쉽지 않습니다.

제게 알려 주시면 알려주세요.

<configuration> 
    <system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="/client/security/login.aspx" timeout="480" /> 
    </authentication> 
    <authorization> 
     <deny users="?"/> 
    </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> 

    <location path="admin"> 
    <system.web> 
     <authorization> 
     <allow roles="SysAdmins,AppAdmins"/> 
     <deny users="*"/>    
     </authorization> 
    </system.web> 
    </location> 
    <location path="js"> 
    <system.web> 
     <authorization> 
     <deny users="?"/> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
</configuration> 
+0

감사 노아 : 통합 된 파이프 라인에서 역할에 따른 보안이 제대로 작동하지 않는 것 같습니다. .NET system.web 섹션을 사용하면 정적 파일이 보호되지 않는 경우에도 적어도 중요한 aspx 페이지에서 rifraff를 유지할 수 있습니다. – Toby

+1

블로그 게시물은 IIS 7 URL 인증에서 역할이 지원됨을 나타냅니다. http://mvolo.com/blogs/serverside/archive/2009/05/11/Workaround-for-using-IIS -7-url-authorization-with-ASP.NET-roles.aspx –

+0

윌을 살펴 보겠습니다. 좋은 발견! – Toby