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
Комментарии
Этот класс отвечает за оценку всех политик (правил, определяющих, что пользователь может делать), сравнивая политики с утверждениями, сделанными клиентом, устанавливая результирующий AuthorizationContextServiceSecurityContextрезультат и предоставляя решение о том, следует ли разрешить или запретить доступ для данной операции службы для вызывающего абонента.
Метод 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, Message) |
Проверяет авторизацию для заданного контекста операции при необходимости доступа к сообщению. |
| CheckAccess(OperationContext) |
Проверяет авторизацию для заданного контекста операции. |
| CheckAccessCore(OperationContext) |
Проверяет авторизацию для заданного контекста операции на основе оценки политики по умолчанию. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetAuthorizationPolicies(OperationContext) |
Возвращает набор политик, участвующих в оценке политики. |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Применяется к
См. также раздел
- ClaimSet
- Claim
- Настраиваемая авторизация
- Практическое руководство. Создание настраиваемого диспетчера авторизации для службы
- Практическое руководство. Создание настраиваемой политики авторизации
- Практическое руководство. Создание настраиваемого утверждения
- Практическое руководство. Сравнение утверждений