2013-08-12 4 views
0

이 코드는 Question에 간단 할 수도 있지만 그 대답은 제가 찾고있는 것이 아닙니다.asp.net SimpleMembershipProvider를 만들기위한 전략 계층 적 관계가 있습니다.

내가 원하는 것일 수있는 가까운 질문은 this SO question입니다.

상황은 SimpleMemberShip Provider를 사용하는 ASP.NET MVC4 응용 프로그램을 사용하고 있습니다. 나는 Active Directory에서 그들이 좋아하는 곳을 기반으로 역할을 정의하고 있습니다. 따라서 로그인 및 사용자 액세스는 광고 내에서 어떤 OU/그룹에 있는지에 기반합니다. 그들은 로그인 할 때 나는 같은 것을 할 :

을 사용자 정의 로그인 인터페이스 (실질적으로)이 증가 할

static UserAuthenticationManager() 
    { 
     //Create some roles for SimpleMembership 
     if (!Roles.RoleExists("IT")) 
      Roles.CreateRole("IT"); 
     if (!Roles.RoleExists("Student")) 
      Roles.CreateRole("Student"); 
     if (!Roles.RoleExists("Faculty")) 
      Roles.CreateRole("Faculty"); 
     if (!Roles.RoleExists("Adjunct")) 
      Roles.CreateRole("Adjunct"); 
    } 

의 생성자에서 시간이 지남에 따라 인트라넷 응용 프로그램은 다른 부서로 개방한다. 내가 역할 이것을 'UserIsInGroup()'방법에서

if (StaffAd.UserIsInGroup(username, "IT")) 
      Roles.AddUserToRole(username, "IT"); 
     if (StaffAd.UserIsInGroup(username, "Faculty")) 
      Roles.AddUserToRole(username, "Faculty"); 
     if (StaffAd.UserIsInGroup(username, "Adjunct Faculty Current")) 
      Roles.AddUserToRole(username, "Adjunct"); 
     if (StaffAd.UserIsInGroup(username, "Active_Student")) 
      Roles.AddUserToRole(username, "Student"); 

사용자 이름을 소요하고 사용자가 그룹의 일부입니다 확인하는 AD의 이름을 지정하는 방법

이입니다. 내가 올라오고에 대한 걱정

이슈는 역할에 대한

  1. 생성자는 기다란 얻을려고하고있다 있습니다.
  2. 할당 된 역할도 길어집니다. 또한 사용자는 잠재적으로 여러 그룹에 속할 수 있습니다.
  3. 권한 부여 속성은 실질적으로 증가 할 것입니다. 우려 번호 3의 예를 들어

: 볼

내가 같은 역할 변화와 같은 장애물, 몇으로 실행되지 않도록 할 수 있도록하려면
[Authorize(Roles = "IT, DegreeTracker, Student")] 

(아마 단지 코드를 추가 사람이 어떤 역할을하고 언제 로그인 할 때마다 최신으로 업데이트되는지), 많은 역할을 관리합니다. 'DegreeTracker'와 'Student'같은 두 가지 역할을 함께 그룹화 할 수 있으므로 두 개의 하위 그룹 역할을합니다. 은 두 개의 하위 역할의 상위 역할 인 'DegreeUsers'역할을 정의 할 수 있습니다.

상황을 관리하고 코드를보다 깨끗하게 유지하는 데 지능적인 방법 인 것 같습니까? 그렇다면 Authorize 속성을 덮어 쓰는 중입니까?

답변

1

article on decoupling your security design from application design을 살펴보십시오. 나는 그것이이 시나리오에서 잘 도움이 될 것이라고 생각한다. 이 기사에서는 SimpleMembership 데이터베이스를 확장하고 리소스와 작업을 역할 대신 매개 변수로 허용하는 사용자 지정 권한 부여 특성을 만드는 방법을 보여줍니다. 이 경우 리소스가 Active Directory의 조직 구성 단위가됩니다. 그런 다음 모든 코드를 검토하고 권한 부여 특성을 변경하고, 다시 컴파일하고, 다시 배포하는 대신 데이터베이스의 자원/작업에 대한 역할 매핑을 수정할 수 있습니다.