WCF(Windows Communication Foundation)를 사용하여 여러 가지 방법으로 액세스를 제어할 수 있습니다. 이 항목에서는 다양한 메커니즘에 대해 간략하게 설명하고 각 메커니즘을 사용하는 시기에 대한 제안을 제공합니다. 사용할 올바른 메커니즘을 선택하는 데 도움이 됩니다. 액세스 기술은 복잡한 순서로 나열됩니다. 가장 간단한 것은 PrincipalPermissionAttributeID 모델입니다.
이러한 메커니즘 외에도 WCF를 사용한 가장 및 위임은 위임 및 가장에 설명되어 있습니다.
주요 권한 특성 (PrincipalPermissionAttribute)
서비스 PrincipalPermissionAttribute 메서드에 대한 액세스를 제한하는 데 사용됩니다. 메서드에 특성이 적용되면 특정 호출자의 ID 또는 Windows 그룹 또는 ASP.NET 역할의 멤버 자격을 요구하는 데 사용할 수 있습니다. 클라이언트가 X.509 인증서를 사용하여 인증되는 경우 주체 이름과 인증서의 지문으로 구성된 기본 ID가 제공됩니다.
PrincipalPermissionAttribute 서비스를 실행 중인 컴퓨터의 리소스에 대한 액세스를 제어하고 서비스 사용자가 항상 서비스가 실행 중인 동일한 Windows 도메인에 속하는 경우를 사용합니다. 액세스 수준을 지정한 Windows 그룹(예: 없음, 읽기 전용 또는 읽기 및 쓰기)을 쉽게 만들 수 있습니다.
특성 사용에 대한 자세한 내용은 방법: PrincipalPermissionAttribute 클래스를 사용하여 액세스 제한을 참조하세요. ID에 대한 자세한 내용은 서비스 ID 및 인증을 참조하세요.
ASP.NET 멤버 자격 공급자
ASP.NET 기능은 멤버 자격 공급자입니다. 멤버 자격 공급자는 기술적으로 액세스 제어 메커니즘이 아니지만 서비스의 엔드포인트에 액세스할 수 있는 가능한 ID 집합을 제한하여 서비스에 대한 액세스를 제어할 수 있습니다. 멤버 자격 기능에는 웹 사이트의 사용자가 사이트와 계정을 설정할 수 있도록 사용자 이름/암호 조합으로 채울 수 있는 데이터베이스가 포함되어 있습니다. 멤버 자격 공급자를 사용하는 서비스에 액세스하려면 사용자가 사용자 이름 및 암호를 사용하여 로그온해야 합니다.
비고
먼저 ASP.NET 기능을 사용하여 데이터베이스를 채워야 WCF 서비스에서 권한 부여 목적으로 데이터베이스를 사용할 수 있습니다.
기존 ASP.NET 웹 사이트의 멤버 자격 데이터베이스가 이미 있고 동일한 사용자 이름과 암호로 권한이 부여된 서비스를 사용할 수 있도록 하려는 경우에도 멤버 자격 기능을 사용할 수 있습니다.
WCF 서비스에서 멤버 자격 기능을 사용하는 방법에 대한 자세한 내용은 방법: ASP.NET 멤버 자격 공급자를 사용합니다.
ASP.NET 역할 공급자
ASP.NET 또 다른 기능은 역할을 사용하여 권한 부여를 관리하는 기능입니다. ASP.NET 역할 공급자를 사용하면 개발자가 사용자에 대한 역할을 만들고 각 사용자를 역할 또는 역할에 할당할 수 있습니다. 멤버 자격 공급자와 마찬가지로 역할 및 할당은 데이터베이스에 저장되며 ASP.NET 역할 공급자의 특정 구현에서 제공하는 도구를 사용하여 채울 수 있습니다. 멤버 자격 기능과 마찬가지로 WCF 개발자는 데이터베이스의 정보를 사용하여 역할별로 서비스 사용자에게 권한을 부여할 수 있습니다. 예를 들어 위에서 설명한 액세스 제어 메커니즘과 함께 역할 공급자를 PrincipalPermissionAttribute
사용할 수 있습니다.
기존 ASP.NET 역할 공급자 데이터베이스가 있고 WCF 서비스에서 동일한 규칙 및 사용자 할당 집합을 사용하려는 경우 ASP.NET 역할 공급자를 사용할 수도 있습니다.
역할 공급자 기능을 사용하는 방법에 대한 자세한 내용은 방법: 서비스에서 ASP.NET 역할 공급자 사용
권한 부여 관리자
또 다른 기능은 AzMan(권한 부여 관리자)과 ASP.NET 역할 공급자를 결합하여 클라이언트에 권한을 부여합니다. ASP.NET 웹 서비스를 호스트하는 경우 AzMan을 애플리케이션에 통합하여 AzMan을 통해 서비스에 대한 권한 부여를 수행할 수 있습니다. ASP.NET 역할 관리자는 애플리케이션 역할을 관리하고, 역할에서 사용자를 추가 및 제거하고, 역할 멤버 자격을 확인할 수 있는 API를 제공하지만 사용자에게 명명된 작업 또는 작업을 수행할 권한이 있는지 여부를 쿼리할 수는 없습니다. AzMan을 사용하면 개별 작업을 정의하고 작업으로 결합할 수 있습니다. AZMan을 사용하면 역할 검사 외에도 사용자가 작업을 수행할 수 있는지 여부를 확인할 수 있습니다. 역할 할당 및 태스크 권한 부여는 애플리케이션 외부에서 구성하거나 애플리케이션 내에서 프로그래밍 방식으로 수행할 수 있습니다. AzMan 관리 MMC(Microsoft Management Console) 스냅인을 사용하면 관리자가 런타임에 역할이 수행할 수 있는 작업을 변경하고 각 사용자의 역할 멤버 자격을 관리할 수 있습니다.
기존 AzMan 설치에 대한 액세스 권한이 있고 AzMan/역할 공급자 조합의 기능을 사용하여 서비스 사용자에게 권한을 부여하려는 경우 AzMan 및 ASP.NET 역할 공급자를 사용할 수도 있습니다.
AzMan 및 ASP.NET 역할 공급자에 대한 자세한 내용은 방법: ASP.NET 2.0에서 AzMan(권한 부여 관리자) 사용 방법을 참조하세요. AzMan 및 WCF 서비스에 대한 역할 공급자를 사용하는 방법에 대한 자세한 내용은 방법: 서비스에서 ASP.NET 권한 부여 관리자 역할 공급자 사용을 참조하세요.
ID 모델
ID 모델은 클라이언트에 권한을 부여하는 클레임 및 정책을 관리할 수 있는 API 집합입니다. ID 모델을 사용하면 호출자가 서비스에 자신을 인증하는 데 사용한 자격 증명에 포함된 모든 클레임을 검사하고, 클레임을 서비스에 대한 정책 집합과 비교하고, 비교에 따라 액세스 권한을 부여하거나 거부할 수 있습니다.
액세스 권한을 부여하기 전에 세부 제어 및 특정 조건을 설정하는 기능이 필요한 경우 ID 모델을 사용합니다. 예를 들어 이 조건을 사용하는 PrincipalPermissionAttribute경우 조건은 단순히 사용자의 ID가 인증되고 특정 역할에 속한다는 것입니다. 반면 ID 모델을 사용하면 문서를 볼 수 있도록 허용되기 전에 사용자가 18세 이상이어야 하고 유효한 운전 면허증을 소유해야 한다는 정책을 만들 수 있습니다.
ID 모델 클레임 기반 액세스 제어를 활용할 수 있는 한 가지 예는 발급된 토큰 시나리오에서 페더레이션 자격 증명을 사용하는 경우입니다. 페더레이션 및 발급된 토큰에 대한 자세한 내용은 페더레이션 및 발급된 토큰을 참조하세요.
ID 모델에 대한 자세한 내용은 ID 모델을 사용하여 클레임 및 권한 부여 관리를 참조하세요.