ServiceAuthorizationManager Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Обеспечивает проверку для предоставления доступа к операциям службы (авторизации).
public ref class ServiceAuthorizationManager
public class ServiceAuthorizationManager
type ServiceAuthorizationManager = class
Public Class ServiceAuthorizationManager
- Наследование
-
ServiceAuthorizationManager
Примеры
В следующем примере показан класс MyServiceAuthorizationManager
, наследуемый от класса ServiceAuthorizationManager и переопределяющий метод CheckAccessCore.
public class MyServiceAuthorizationManager : ServiceAuthorizationManager
{
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;
}
}
Public Class MyServiceAuthorizationManager
Inherits ServiceAuthorizationManager
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
End Class
Комментарии
Этот класс отвечает за оценку всех политик (правил, определяющих, что разрешено делать пользователю), сравнение политик с утверждениями, сделанными клиентом, присвоение полученному в результате объекту AuthorizationContext объекта ServiceSecurityContext, и принятие решения об авторизации (предоставить вызывающему объекту доступ к данной операции службы или отказать в доступе).
Метод CheckAccessCore вызывается инфраструктурой Windows Communication Foundation (WCF) при каждой попытке доступа к ресурсу. Этот метод возвращает значение true
или значение false
для разрешения доступа или отказа в нем соответственно.
ServiceAuthorizationManager является частью инфраструктурымодели удостоверений WCF. Модель удостоверения позволяет создавать пользовательские политики авторизации и пользовательские схемы авторизации. Дополнительные сведения о том, как работает модель удостоверений, см. в разделе Управление утверждениями и авторизацией с помощью модели удостоверений.
Пользовательская авторизация
Этот класс не выполняет никакой авторизации и предоставляет пользователям доступ ко всем операциям службы. Для обеспечения более строгой авторизации необходимо создать пользовательский диспетчер авторизации для проверки пользовательских политик. Для этого необходимо создать класс, наследуемый от этого класса, и переопределить метод CheckAccessCore. Укажите экземпляр производного класса посредством свойства ServiceAuthorizationManager.
В методе CheckAccessCore приложение может использовать объект OperationContext для доступа к удостоверению вызывающего объекта (ServiceSecurityContext).
Путем получения свойства IncomingMessageHeaders, которое возвращает объект MessageHeaders, приложение может получить доступ к службе (To) и к операции (Action).
Путем получения свойства RequestContext, которое возвращает объект RequestContext, приложение может получить доступ ко всему приложению запроса (RequestMessage) и принять соответствующее решение об авторизации.
Пример см. в разделе Практическое руководство. Создание пользовательского диспетчера авторизации для службы.
Для создания пользовательских политик авторизации реализуйте класс IAuthorizationPolicy. Пример см. в разделе Практическое руководство. Создание настраиваемой политики авторизации.
Для создания пользовательского утверждения используйте класс Claim. Пример см. в разделе Практическое руководство. Создание пользовательского утверждения. Чтобы сравнить пользовательские утверждения, необходимо сравнить утверждения, как показано в разделе Практическое руководство. Сравнение утверждений.
Дополнительные сведения см. в разделе Настраиваемая авторизация.
Тип настраиваемого диспетчера авторизации можно задать с помощью <serviceAuthorization> в файле конфигурации клиентского приложения.
Конструкторы
ServiceAuthorizationManager() |
Инициализирует новый экземпляр класса ServiceAuthorizationManager. |
Методы
CheckAccess(OperationContext) |
Проверяет авторизацию для данного контекста операции. |
CheckAccess(OperationContext, Message) |
Проверяет авторизацию для данного контекста операции, когда требуется доступ к сообщению. |
CheckAccessCore(OperationContext) |
Проверяет авторизацию для данного контекста операции на основе оценки политики по умолчанию. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetAuthorizationPolicies(OperationContext) |
Возвращает набор политик, участвующих в оценке политики. |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Применяется к
См. также раздел
- ClaimSet
- Claim
- Пользовательская авторизация
- Практическое руководство. Создание пользовательского диспетчера авторизации для службы
- Практическое руководство. Создание настраиваемой политики авторизации
- Практическое руководство. Создание пользовательского утверждения
- Практическое руководство. Сравнение утверждений