ServiceAuthorizationManager.CheckAccessCore(OperationContext) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Verifica a autorização para o contexto operacional dado com base na avaliação padrão da política.
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
Parâmetros
- operationContext
- OperationContext
O OperationContext para o pedido de autorização atual.
Devoluções
true se o acesso for concedido; caso contrário, false. A predefinição é true.
Exemplos
O exemplo seguinte mostra uma sobreposição do CheckAccessCore método.
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
Para outro exemplo, veja Como: Criar um Gestor de Autorização Personalizado para um Serviço.
Observações
ServiceSecurityContext é geralmente o resultado da avaliação padrão da política.
Substitua este método para fornecer decisões de autorização personalizadas.
Este método pode ser usado para tomar decisões de autorização com base em conjuntos de reivindicações que são inferidos com base em tokens recebidos, ou adicionados através de políticas externas de autorização. Também pode tomar decisões de autorização com base nas propriedades da mensagem recebida: por exemplo, o cabeçalho da ação.
Neste método, a aplicação pode usar o operationContext parâmetro para aceder à identidade do chamador (ServiceSecurityContext). Ao devolver o RequestContext objeto da RequestContext propriedade, a aplicação pode aceder a toda a mensagem de pedido (RequestMessage). Ao devolver o MessageHeaders objeto da IncomingMessageHeaders propriedade, a aplicação pode aceder ao URL do serviço (To) e à operação (Action). Com esta informação, a aplicação pode tomar a decisão de autorização em conformidade.
As alegações feitas por um utilizador encontram-se no ClaimSet retorno pela ClaimSets propriedade do AuthorizationContext. A corrente AuthorizationContext é devolvida pela ServiceSecurityContext propriedade da OperationContext classe.