ServiceAuthorizationManager.CheckAccessCore(OperationContext) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
기본 정책 평가에 따라 해당 작업 컨텍스트에 대한 권한 부여를 확인합니다.
protected:
virtual bool CheckAccessCore(System::ServiceModel::OperationContext ^ operationContext);
protected virtual bool CheckAccessCore (System.ServiceModel.OperationContext operationContext);
abstract member CheckAccessCore : System.ServiceModel.OperationContext -> bool
override this.CheckAccessCore : System.ServiceModel.OperationContext -> bool
Protected Overridable Function CheckAccessCore (operationContext As OperationContext) As Boolean
매개 변수
- operationContext
- OperationContext
현재 권한 부여 요청에 대한 OperationContext입니다.
반환
액세스 권한이 부여되면 true
이고, 그렇지 않으면 false
입니다. 기본값은 true
입니다.
예제
다음 예제에서는 CheckAccessCore 메서드의 재정의를 보여 줍니다.
protected override bool CheckAccessCore(OperationContext operationContext)
{
// Extract the action URI from the OperationContext. Match this against the claims
// in the AuthorizationContext.
string action = operationContext.RequestContext.RequestMessage.Headers.Action;
// Iterate through the various claim sets in the AuthorizationContext.
foreach(ClaimSet cs in operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets)
{
// Examine only those claim sets issued by System.
if (cs.Issuer == ClaimSet.System)
{
// Iterate through claims of type "http://www.contoso.com/claims/allowedoperation".
foreach (Claim c in cs.FindClaims("http://www.contoso.com/claims/allowedoperation", Rights.PossessProperty))
{
// If the Claim resource matches the action URI then return true to allow access.
if (action == c.Resource.ToString())
return true;
}
}
}
// If this point is reached, return false to deny access.
return false;
}
Protected Overrides Function CheckAccessCore(ByVal operationContext As OperationContext) As Boolean
' Extract the action URI from the OperationContext. Match this against the claims.
' in the AuthorizationContext.
Dim action As String = operationContext.RequestContext.RequestMessage.Headers.Action
' Iterate through the various claimsets in the AuthorizationContext.
Dim cs As ClaimSet
For Each cs In operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets
' Examine only those claim sets issued by System.
If cs.Issuer Is ClaimSet.System Then
' Iterate through claims of type "http://www.contoso.com/claims/allowedoperation".
Dim c As Claim
For Each c In cs.FindClaims("http://www.contoso.com/claims/allowedoperation", _
Rights.PossessProperty)
' If the Claim resource matches the action URI then return true to allow access.
If action = c.Resource.ToString() Then
Return True
End If
Next c
End If
Next cs
' If this point is reached, return false to deny access.
Return False
End Function
다른 예제를 보려면 방법: 서비스에 대 한 사용자 지정 권한 부여 관리자 만들기합니다.
설명
ServiceSecurityContext는 일반적으로 기본 정책 평가의 결과입니다.
사용자 지정 권한 부여를 결정하려면 이 메서드를 재정의합니다.
이 메서드는 들어오는 토큰을 기준으로 유추되거나 외부 권한 부여 정책을 통해 추가된 클레임 집합을 근거로 하여 권한 부여를 결정할 때 사용할 수 있습니다. 뿐만 아니라 들어오는 메시지의 속성(예: 동작 헤더)에 따라 권한 부여 여부를 결정할 수도 있습니다.
이 메서드에서 애플리케이션은 operationContext
매개 변수를 사용하여 호출자 ID(ServiceSecurityContext)에 액세스할 수 있습니다. 애플리케이션은 RequestContext 속성으로부터 RequestContext 개체를 반환함으로써 전체 요청 메시지(RequestMessage)에 액세스할 수 있습니다. 애플리케이션은 MessageHeaders 속성으로부터 IncomingMessageHeaders 개체를 반환함으로써 서비스 URL(To)과 작업(Action)에 액세스할 수 있습니다. 애플리케이션은 이 정보를 사용하여 적합한 권한 부여 결정을 내릴 수 있습니다.
사용자의 클레임은 ClaimSet의 ClaimSets 속성에 의해 반환되는 AuthorizationContext
에 있습니다. 현재 AuthorizationContext
는 ServiceSecurityContext 클래스의 OperationContext 속성에 의해 반환됩니다.