다음을 통해 공유


ClaimsPrincipal 클래스

정의

여러 클레임 기반 ID를 지원하는 IPrincipal 구현입니다.

public ref class ClaimsPrincipal : System::Security::Principal::IPrincipal
public class ClaimsPrincipal : System.Security.Principal.IPrincipal
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class ClaimsPrincipal : System.Security.Principal.IPrincipal
type ClaimsPrincipal = class
    interface IPrincipal
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type ClaimsPrincipal = class
    interface IPrincipal
Public Class ClaimsPrincipal
Implements IPrincipal
상속
ClaimsPrincipal
파생
특성
구현

예제

다음 예제에서는 HTTP 요청에서 사용자가 제공한 클레임을 추출하고 HTTP 응답에 씁니다. 현재 사용자는 에서 HttpContextClaimsPrincipal로 읽습니다. 그런 다음 클레임을 읽은 다음 응답에 기록됩니다.

if (HttpContext.Current.User is ClaimsPrincipal principal)
{
   foreach (Claim claim in principal.Claims)
   {
      Response.Write("CLAIM TYPE: " + claim.Type + "; CLAIM VALUE: " + claim.Value + "</br>");
   }
}

설명

.NET Framework 4.5부터 WIF(Windows Identity Foundation) 및 클레임 기반 ID는 .NET Framework 완전히 통합됩니다. 즉, 이제 .NET Framework 보안 주체를 나타내는 많은 클래스가 단순히 인터페이스를 구현하는 IPrincipal 것이 아니라 에서 ClaimsPrincipal 파생됩니다. 인터페이스를 구현하는 IPrincipal 것 외에도 는 ClaimsPrincipal 클레임 작업에 유용한 속성과 메서드를 노출합니다.

ClaimsPrincipal 는 각각 ClaimsIdentity인 ID 컬렉션을 노출합니다. 일반적인 경우 속성을 통해 Identities 액세스되는 이 컬렉션에는 단일 요소만 있습니다.

대부분의 보안 주체 클래스가 파생되는 보안 주체로 .NET 4.5의 도입 ClaimsPrincipal 은 ID를 처리하는 방식으로 아무것도 변경하도록 강요하지 않습니다. 그러나 더 많은 가능성을 열고 더 세부적인 액세스 제어를 행사할 수 있는 더 많은 기회를 제공합니다. 예를 들면 다음과 같습니다.

  • 애플리케이션 코드 자체는 드라이브 추가 인증, 권한 부여 및 개인 설정 작업에 대 한 현재 보안 주체에 포함 된 클레임이와 직접 협업할 수 있습니다.

  • 실행이 코드에 도달하기 전에 인증 요청 및 권한 부여 정책을 처리할 수 있는 클레임 처리 파이프라인을 사용하여 리소스를 프런트할 수 있습니다. 파생 된 클래스의 인스턴스는 사용자 지정 클레임 인증 관리자를 사용 하 여 웹 기반 애플리케이션 또는 서비스를 구성할 수는 예를 들어를 ClaimsAuthenticationManager 클래스입니다. 이렇게 구성되면 요청 처리 파이프라인은 들어오는 요청의 Authenticate 컨텍스트를 나타내는 을 ClaimsPrincipal 전달하는 클레임 인증 관리자에서 메서드를 호출합니다. 그러면 클레임 인증 관리자가 들어오는 클레임의 값에 따라 인증을 수행할 수 있습니다. 들어오는 클레임 집합에 클레임을 필터링, 변환 또는 추가할 수도 있습니다. 예를 들어 로컬 사용자 프로필과 같은 로컬 데이터 원본에서 만든 새 클레임으로 들어오는 클레임 집합을 보강하는 데 사용할 수 있습니다.

  • 파생 된 클래스의 인스턴스는 사용자 지정 클레임 권한 부여 관리자를 사용 하 여 웹 기반 애플리케이션을 구성할 수 있습니다는 ClaimsAuthorizationManager 클래스입니다. 이렇게 구성되면 요청 처리 파이프라인은 들어오는 ClaimsPrincipalAuthorizationContext 패키지하고 클레임 권한 부여 관리자에서 메서드를 호출합니다 CheckAccess . 그러면 클레임 권한 부여 관리자가 들어오는 클레임에 따라 권한 부여를 적용할 수 있습니다.

  • 인라인 코드 클레임 기반 액세스 검사는 사용자 지정 클레임 권한 부여 관리자를 사용 하 여 애플리케이션을 구성 하 고 하나를 사용 하 여 수행할 수 있습니다 합니다 ClaimsPrincipalPermission 명령적 액세스 검사를 수행 하는 클래스 또는 ClaimsPrincipalPermissionAttribute 선언적 액세스 하려면 확인합니다. 코드 클레임 기반 액세스 검사 처리 파이프라인 외부에서 수행 인라인와 함께 모든 애플리케이션에 사용할 수 있는으로 클레임 권한 부여 관리자가 구성 되어 있습니다.

속성을 ClaimsPrincipal로 캐스팅 Thread.CurrentPrincipal 하여 RP(신뢰 당사자) 애플리케이션에서 요청과 연결된 보안 주체 또는 스레드가 실행 중인 보안 주체에 대한 instance 가져올 ClaimsPrincipal 수 있습니다. 개체와 ClaimsPrincipal 연결된 클레임은 해당 Claims 속성을 통해 사용할 수 있습니다. 속성은 Claims 보안 주체와 연결된 ID에 포함된 모든 클레임을 반환합니다. 에서 여러 ClaimsIdentity 인스턴스를 포함 하는 ClaimsPrincipal 드문 경우는 속성을 사용 Identities 하거나 사용 하 여 기본 ID에 액세스할 수 있습니다는 Identity 속성입니다. ClaimsPrincipal 는 이러한 클레임을 검색하고 LINQ(언어 통합 쿼리)를 완전히 지원하는 여러 메서드를 제공합니다. ID는 또는 AddIdentity 메서드를 사용하여 AddIdentities 보안 주체에 추가할 수 있습니다.

참고

에 ID를 ClaimsPrincipal추가하려면 호출자에게 완전한 신뢰가 있어야 합니다.

기본적으로 WIF는 WindowsIdentity 속성을 통해 반환할 기본 ID를 선택할 때 개체의 Identity 우선 순위를 지정합니다. 속성을 통해 PrimaryIdentitySelector 대리자를 제공하여 선택을 수행하여 이 동작을 수정할 수 있습니다. 속성에 ClaimsPrincipalSelector 대 한 비슷한 기능을 제공 하는 Current 속성입니다.

클레임 기반 모델에서 보안 주체가 지정된 역할에 있는지 여부는 기본 ID에서 제공하는 클레임에 의해 결정됩니다. 메서드는 IsInRole 기본적으로 보안 주체와 연결된 각 ID를 검사하여 지정된 역할 값을 가진 클레임이 있는지 여부를 확인합니다. 역할 검사 중에 검사해야 하는 클레임을 결정하는 데 사용되는 클레임 형식(해당 Claim.Type 속성으로 표시됨)은 해당 ClaimsIdentity.RoleClaimType 속성을 통해 ID에 지정됩니다. 따라서 역할 검사 중에 검사되는 클레임은 보안 주체와 연결된 다른 ID에 대해 다른 형식일 수 있습니다.

생성자

ClaimsPrincipal()

ClaimsPrincipal 클래스의 새 인스턴스를 초기화합니다.

ClaimsPrincipal(BinaryReader)

지정된 ClaimsPrincipal을 사용하여 BinaryReader의 인스턴스를 초기화합니다.

ClaimsPrincipal(IEnumerable<ClaimsIdentity>)

지정된 클레임 ID를 사용하여 ClaimsPrincipal 클래스의 새 인스턴스를 초기화합니다.

ClaimsPrincipal(IIdentity)

지정된 ID에서 ClaimsPrincipal 클래스의 새 인스턴스를 초기화합니다.

ClaimsPrincipal(IPrincipal)

지정된 보안 주체에서 ClaimsPrincipal 클래스의 새 인스턴스를 초기화합니다.

ClaimsPrincipal(SerializationInfo, StreamingContext)
사용되지 않음.

ISerializable을 사용하여 만든 serialize된 스트림으로부터 ClaimsPrincipal 클래스의 새 인스턴스를 초기화합니다.

속성

Claims

이 클레임 보안 주체와 연결된 모든 클레임 ID의 모든 클레임을 포함하는 컬렉션을 가져옵니다.

ClaimsPrincipalSelector

Current 속성에 의해 반환된 클레임 보안 주체를 선택하는 데 사용된 대리자를 가져오거나 설정합니다.

Current

현재 클레임 주체를 가져옵니다.

CustomSerializationData

파생된 형식에서 제공하는 추가 데이터를 포함합니다. 일반적으로 WriteTo(BinaryWriter, Byte[])를 호출할 때 설정합니다.

Identities

이 클레임 보안 주체와 연결된 모든 클레임 ID를 포함하는 컬렉션을 가져옵니다.

Identity

이 클레임 보안 주체와 연결된 기본 클레임 ID를 가져옵니다.

PrimaryIdentitySelector

Identity 속성에 의해 반환된 클레임 ID를 선택하는 데 사용된 대리자를 가져오거나 설정합니다.

메서드

AddIdentities(IEnumerable<ClaimsIdentity>)

이 클레임 주체에 지정된 클레임 ID를 추가합니다.

AddIdentity(ClaimsIdentity)

이 클레임 보안 주체에 지정된 클레임 ID를 추가합니다.

Clone()

이 인스턴스의 복사본을 반환합니다.

CreateClaimsIdentity(BinaryReader)

새 클레임 ID를 만듭니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
FindAll(Predicate<Claim>)

지정된 조건자와 일치하는 클레임을 모두 검색합니다.

FindAll(String)

모든 클레임 또는 지정된 클레임 형식을 갖는 클레임을 검색합니다.

FindFirst(Predicate<Claim>)

지정된 조건자와 일치하는 첫 번째 클레임을 검색합니다.

FindFirst(String)

지정된 클레임 형식으로 첫 번째 클레임을 검색합니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetObjectData(SerializationInfo, StreamingContext)

현재 SerializationInfo 개체를 serialize하는 데 필요한 데이터로 ClaimsPrincipal를 채웁니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
HasClaim(Predicate<Claim>)

이 클레임 보안 주체와 연결된 클레임 ID에 지정된 조건자와 일치하는 클레임이 들어 있는지 여부를 확인합니다.

HasClaim(String, String)

이 클레임 보안 주체와 연결된 클레임 ID에 지정된 클레임 형식 및 값을 갖는 클레임이 들어 있는지 여부를 확인합니다.

IsInRole(String)

이 클레임 보안 주체가 나타내는 엔터티(사용자)가 지정된 역할에 속하는지 여부를 나타내는 값을 반환합니다.

MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
WriteTo(BinaryWriter, Byte[])

BinaryWriter를 사용하여 직렬화합니다.

WriteTo(BinaryWriter)

BinaryWriter를 사용하여 직렬화합니다.

적용 대상

추가 정보