ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ASP.NET 로그인관련 권한 부여 Web.Config(구성파일 ) <authentication> 속성
    .NET/ASP.NET 2008. 12. 17. 11:39
    반응형
    구성 파일의 <authentication> 요소 하위에 있는 <forms> 요소는 폼 기반 인증의 세세한 제어를 위해 여러 가지 특성들을 제공합니다. 다음은 <forms> 요소의 주요 특성입니다



    특성

    설명

    cookieless

    인증 쿠키의 사용 여부 및 동작을 정의합니다.

    UserCookies: 장치에 관계없이 쿠키를 항상 사용합니다.

    UserUrl: 쿠키를 사용하지 않고 인증 정보를 URL에 저장합니다.

    AutoDetect: 브라우저에서 쿠키를 지원하면 쿠키를 사용하고 그렇지 않으면

     쿠키를 사용하지 않습니다.

    UseDeviceProfile(기본값): 장치 프로필에서 쿠키를 지원하면 쿠키를 사용하고

    , 그렇지 않으면 쿠키를 사용하지 않습니다.



    default

    인증 후 리디렉션할 기본 URL을 지정합니다. 기본값은 Default.aspx 입니다.

    domain

    쿠키를 공유할 수 있도록 하는 도메인을 지정 합니다. 기본값은 빈 문자열(“”

    입니다. 예를 들어, 이 특성에 dotnetpro.co.kr이라는 값을 지정하면,

     test1.dotnetpro.co.kr, test2.dotnetpro.co.kr 등과 같은 동일한 도메인 

    내에서 쿠키를 공유할 수 있습니다.


    loginUrl

    유효한 인증 쿠키가 없을 때 리디렉션할 URL을 지정합니다. 기본값은

    Login.aspx 입니다.





    name

    인증 쿠키의 이름을 지정합니다. 기본값은 .ASPXAUTH 입니다.

    여러 웹 응용 프로그램이 단일 웹 서버에서 실행되고 각 응용 프로그램에 고유한 쿠키가 필요하면 각 응용 프로그램의 Web.config 파일에서 고유한 쿠키 이름을 지정하면 됩니다.

    path

    쿠키의 경로를 지정합니다. 기본값은 슬래시(/) 입니다.

    protection

    쿠키에 사용되는 암호화 유형을 지정합니다.

    Validation: 쿠키 전송 시 데이터 변경 여부를 체크하여 데이터의 유효성을 

    유지하도록 지정합니다.

    None : 3DES 또는 DES를 사용하여 쿠키를 암호화하지만 쿠키에서 데이터

     유효성 검사를 수행하지 않도록 지정합니다.

    Encryption: 개인 설정 정보를 제공할 경우에만 쿠키를 사용하고 보안 요구

     사항이 낮은 사이트에 대해서는 암호화와 유효성 검사를 모두 해제하도록

     지정합니다.

    All(기본값): 응용 프로그램이 데이터 유효성 검사 및 암호화를 모두

     사용하여 쿠키를 보호하도록 지정합니다.

    timeout

    쿠키가 만료될 때까지의 시간()을 정수 단위로 지정합니다

    기본값은 30()입니다.

    slidingExpiration

    상대(sliding) 만료의 설정 여부를 지정합니다. 기본값은 .NET Framework

     1.x에서는 True이고 .NET Framework 2.0에서는 False입니다.

    True: 상대(sliding) 만료를 사용하도록 지정합니다. 상대(sliding) 만료란 

    인증 쿠키 만료 시점이 사용자의 후속 요청에 대해 상대적이라는 뜻입니다

    , 사용자가 인증 받은 후 다시 페이지를 요청하면 요청한 시점에서

    timeout 특성에서 지정한 시간만큼 인증 쿠키 만료 시간을 다시 갱신합니다.

    False: 상대(sliding) 만료를 사용하지 않도록 지정합니다. , 인증 쿠키는

     사용자의 후속 요청에 상관없이 time 특성에서 지정한 만료 시간 후에 바로

     만료됩니다



    ·권한 부여
    폼 기반 인증에서 권한 부여는 Web.config 파일의 <authorization> 요소에서 지정합니다. <authorization> 요소는 접근 거부 및 허가를 지정하는 다음과 같은 하위 요소를 가집니다



    - <deny>

    - <allow>



    §또한 <deny>, <allow> 요소는 users, roles라는 특성을 제공하는데 이 특성들은 각각 
    사용자(users)와 역할(roles) 별 접근 권한을 지정하는데 사용됩니다. 특히
    사용자(users)를 지정할 때에는 다음과 같은 특수 문자를 사용할 수 있습니다


    사용자 이름

    설명

    *

    모든 사용자를 의미합니다.(익명 사용자 포함)

    ?

    익명 사용자를 의미합니다.

    [<deny>, <allow> 요소의 users 특성에 사용되는 특수 문자]


    권한은 디폴트는 allow * 입니다

    역할(role)이란?

      역할은 보안면에서 동일한 권한을 가진 그룹을 의미하며 여기에 여러 사용자들을 포함시킬

     수 있습니다. 이렇게 역할을 만드는 이유는 각 사용자 별로 권한을 주는 것 보다 특정 역할을 

    만들고 이 역할에 권한을 주어 이 역할에 포함된 모든 사용자들에게 일괄적으로 권한을 부여

     하는 것이 좀더 효율적이기 때문입니다




    §다음은 모든 익명 사용자(?)를 웹 사이트에 접근하지 못하게(<deny>) 하는 구문입니다.

    <authorization>

      <deny users="?"/>

    </authorization>


    §다음은 아이디(이름)aaaa, bbbb 인 사용자만 접근을 허용(<allow>)하고 나머지 모든 사용자들(*)의 접근을 거부(<deny>)하는 구문입니다.

    <authorization> 

      <allow users=aaaa,bbbb/>

      <deny users="*"/>

    </authorization>


    §다음은 Admins 라는 역할을 가진 사용자들만 접근을 허용(<allow>)하고 나머지 모든 
    사용자들(*)의 접근을 거부(<deny>)하는 구문입니다.

    <authorization>

      <allow roles=Admins/>

      <deny users="*"/>

    </authorization>



    §이와 같이 <deny>, <allow> 요소와 users, roles 특성을 사용하면 웹 응용 프로그램 
    단위로 영향을 미치는 권한을 여러분이 원하는 대로 설정할 수 있습니다
    §그렇다면, 특정 페이지에만 권한 부여가 적용되도록 하려면 어떻게 해야 할까요? 그것은 다음과 같이 Web.config 파일에서 <location> 요소를 사용하면 됩니다.

    <configuration>

    <system.web>

        <authorization>

          <deny users="?"/>

    </authorization>

    </system.web>

    <location path=SuperAdminPage.aspx>

      <system.web>

        <authorization>

          <allow roles=SuperAdmins/>

          <deny users=*/>

        </authorization>

      </system.web>

    </location>

    </configuration>

    §위처럼 <location> 요소의 path 특성을 사용하면 특정 페이지만 권한 부여를 할 수 있습니다. 참고로 <location> 요소 위쪽에 있는 부분(<deny users=?/>)은 웹 사이트 전체에 적용되는 권한 부분입니다. 위의 구문은 모든 웹 페이지에서 익명 사용자의 접근을 거부 하며, 특히 SuperAdminPage.aspx 페이지에서는 SuperAdmins 역할을 가진 사용자만 접근 가능하도록 지정합니다.


    §또한 <location> 요소의 path 특성에 특정 폴더를 지정하여 다음과 같이 폴더
     하위에 있는 모든 페이지에 일괄적으로 권한 부여를 할 수 있습니다.

    <location path=secured>

      <system.web>

        <authorization>

          <allow roles=SubAdmins/>

          <deny users=*/>

        </authorization>

      </system.web>

    </location>


    §위의 구문은 secured 폴더 하위에 있는 모든 페이지에
    SubAdmins 역할을 가진 사용자만 접근 가능하도록 지정합니다.




    반응형

    댓글

Designed by Tistory.