Entity Framework를 사용한 역할 기반 보안(1부) | 친애하는 코더

친애하는 코더,

사용자가 계정을 등록할 수 있도록 하는 애플리케이션에서 작업하는 경우 역할 기반 보안 문제에 직면했을 수 있습니다.

역할 기반 보안이란 무엇이며 왜 필요한가요?

사용자가 웹툰을 서로 공유할 수 있는 애플리케이션을 개발 중이라고 가정해 보겠습니다. 사용자가 데이터베이스에 사진을 안전하게 업로드할 수 있는 기능을 이미 구축했으며 사용자가 계정을 등록하고 로그인할 수 있는 기능을 구현했습니다.

그러나 이제 계정 등록 여부와 관계없이 모든 사용자가 액세스할 수 있는 기능, 등록된 사용자가 액세스할 수 있는 기능, 권한이 있는 사용자가 사용할 수 있는 기능이 무엇인지 질문해야 합니다.

여기서 역할 기반 보안이 필요합니다.

예시를 위해 사용자를 4가지 액세스 계층으로 분류하겠습니다.
  • 익명(등록되지 않은) 사용자
  • 등록된 사용자
  • 중재자
  • 관리자

  • 익명 사용자 권한 부여



    기본적으로 내 응용 프로그램에서는 모든 사용자가 내 응용 프로그램의 모든 페이지를 보고, 상호 작용하고, 사용할 수 있습니다.

    그러나 익명 사용자가 볼 수 있는 페이지는 무엇입니까?

    일반적으로 랜딩 페이지와 공개적으로 사용 가능한 데이터 표시는 익명의 최종 사용자가 볼 수 있습니다.

    일부 개발자는 많은 양의 민감한 데이터가 포함된 애플리케이션을 유지 관리할 수 있지만 이는 애플리케이션의 기본 인증을 리팩터링하는 것이 적절할 수 있음을 의미합니다.
    [Authorize][AllowAnonymous] 속성 간의 상호 작용을 통해 이를 수행할 수 있습니다.

    그러나 나중에 익명 사용자에 대해 자세히 설명합니다.

    등록 된 사용자들



    백업하고 [Authorize] 속성에 대해 이야기해 봅시다.

    내 애플리케이션이 업로드를 처리하도록 하려면 일부 뷰에 대한 익명 사용자 액세스를 거부하는 것이 가장 좋습니다. "Authorize"라는 간단한 키워드로 이 작업을 수행할 수 있습니다.

    사용자에게 보기를 보기 위해 등록하고 로그인하라는 메시지를 표시하려면 권한을 부여하려는 보기에 대한 http 요청 가져오기 및 게시를 처리하는 컨트롤러에 액세스해야 합니다.

    설명을 위해 내 ToonSpace 웹툰 애플리케이션을 살펴보고 업로드 컨트롤러에 액세스해 보겠습니다.

    익명의 사용자가 내 웹 사이트에 업로드할 수 없도록 하여 작업 위에 [Authorize]를 추가하여 "가져오기"작업 아래에서 약간 변경해야 합니다.



    이렇게 하면 계정을 등록하고 로그인한 사용자만 "만들기"보기에 액세스하여 데이터베이스에 새로운 항목을 업로드할 수 있습니다.

    중재자 및 관리자



    내 중재자와 관리자 권한에 대한 코드가 본질적으로 동일하기 때문에 중재자와 관리자를 함께 그룹화했습니다. 유일한 차이점은 임의적입니다. 두 역할 모두에 일부 권한을 부여하고 다른 권한은 관리자에게만 부여합니다.

    그렇다면 이러한 역할에 특별한 권한을 부여하려면 어떻게 해야 할까요?

    몇 줄의 간단한 텍스트:



    중재자에게도 권한을 부여하려면 간단히 쉼표를 추가합니다.

    [Authorize(Roles = "Administrator, Moderator"]
    


    역할 기반 보안을 위한 구조를 만들었습니다. 모든 사용자는 계정을 만들고 로그인할 수 있으며 익명 사용자는 아무 것도 게시할 수 없습니다. 하지만 익명 사용자가 무언가(예: 댓글)를 게시할 수 있도록 기본값을 설정하려면 어떻게 해야 합니까? 간단히 [AllowAnonymous] 속성을 사용할 수 있습니다.

    그리고 이러한 관리자 및 중재자 역할은 어떻습니까? 이러한 역할에 속한 사용자를 어떻게 구별합니까? 누구나 관리자 또는 중재자로 등록할 수 있어야 합니까?

    친애하는 Coder, 사용자가 관리자로 등록하도록 허용하는 것이 좋은 생각이 아닐 수도 있다는 것을 이미 알고 계실 것입니다. 그러나 내가 대신 할 수 있는 것은 지정된 사용자를 관리자 또는 중재자로 "시드"하는 것입니다.

    그러나 그것은 내 다음 편지의 주제가 될 것입니다.
    더 많은 편지를 읽으려면 dear-coder.com 에서 찾을 수 있습니다.

    다음 시간까지 키 입력 속도를 높이십시오.

    딸깍딸깍 소리,

    케이시

    좋은 웹페이지 즐겨찾기