나는 Claims-Based-Authorization으로 "Windows Identity Foundation"을 사용할 사무실에서 첫 프로젝트를 진행하고 있습니다. 이를 위해 Microsoft .net은 ClaimsAuthorizationManager 추상 클래스를 제공합니다. 이 클래스를 사용하려면 생성자와 CheckAccess(context as ClaimsAuthorizationContext)
의 두 가지 메서드를 재정의합니다.사용자 지정 "ClaimsAuthorizationManager"Windows Identity Foundation 클래스를 구성하는 좋은 방법은 무엇입니까?
생성자가 모든 것을 설정합니다. 그런 다음 사용자가 웹 페이지와 같은 무언가에 액세스 할 때 CheckAccess
은 사용자, 액세스 할 리소스 및 리소스에서 취할 동작을 나타내는 매개 변수와 함께 호출됩니다. 예를 들어 CheckAccess
을 호출하여 사용자 Bob
에 http://www.mysite.com/SecretPage.aspx
리소스에 액세스 권한이 부여되어 GET
작업을 수행해야하는지 확인할 수 있습니다. CheckAccess
은 true
또는 false
을 단순히 반환합니다. Windows Identity Foundation을 사용하면 CheckAccess
을 거의 모든 방식으로 구현할 수 있습니다.
Microsoft에서 제공하는 코드 샘플에서 CheckAccess
은 21 세 이상임을 나타내는 생일 클레임이있는 경우에만 사용자 액세스를 허용하도록 구성됩니다. 이 정책은 web.config에 일반 텍스트로 제공되고 ClaimsAuthorizationManager
생성자에서 읽습니다.
제 사무실에서는 SQL을 사용하여 거의 모든 데이터를 추적합니다. 따라서 제 경우에는 그렇습니다. 사용자가 리소스에 액세스 할 수 있는지 여부를 결정하기 위해 SQL에서 데이터를 읽도록 ClaimsAuthorizationManager
을 프로그래밍하는 것이 좋습니다. 그러나 무수히 많은 가능한 정책이 있습니다. 나는 현재 프로젝트에서 유용 할을 만들고 싶습니다. 그리고 내가 만든 프로젝트를 찢어서 대체 할 필요없이 미래에 구축하고 향상시킬 수 있습니다.
이 프로젝트를 진행할 때 가장 중요한 점은 무엇입니까?
업데이트 : 필수 요청 정책을 문자열로 표시하는 시스템을 연구하고 있습니다. 바이너리 트리 로직을 사용하여 정책을 그룹화합니다. 나는 "자원"과 "행동"과 관련된 주장의 데이터베이스를 유지한다.
여기에 다른 사람이 ClaimsAuthorizationManager 클래스를 만들었습니까?
나는 마침내 제안을 받았습니다. 본인은 minAge (30) + roleRequired ("감독자")와 같이 페이지 또는 리소스에 대한 액세스 정책을 문자열로 표시하는 방법을 제안했습니다.이 경우 사용자는 30 세 이상이어야합니다. "수퍼바이저"역할에 있어야합니다. 정책을 그룹화하기 위해 이진 트리 논리를 작성했습니다. 사용자가 조치 A 또는 리소스 R을 수행하기를 원한다면 사용자가 어떤 정책을 사용해야하는지 결정하는 방법이 더 어렵다는 것을 알 수 있습니다. –