Поделиться через


AuthorizationContext Класс

Определение

Предоставляет сведения о контексте события авторизации. Включает субъект, представляющий вызывающий объект, запрашиваемый ресурс и выполняемое действие.

public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
Наследование
AuthorizationContext

Примеры

Пример кода, используемый AuthorizationContext в разделе, взят из Claims Based Authorization примера. В этом примере предоставляется пользовательский диспетчер авторизации утверждений, который может авторизовать субъекты на основе политики, указанной в конфигурации. Этот пользовательский диспетчер состоит из трех основных компонентов: класса, производного от ClaimsAuthorizationManager класса, реализующего диспетчер, класса, ResourceAction который связывает ресурс и действие, и средства чтения политики, который считывает и компилирует политику, указанную в файле конфигурации. Затем диспетчер авторизации утверждений может использовать эту скомпилированную политику для оценки субъекта для авторизации доступа к ресурсам. Не все элементы отображаются для краткости. Сведения об этом и других примерах, доступных для WIF, и о том, где их можно скачать, см. в разделе WiF Code Sample Index.

В следующем коде CheckAccess показан метод для настраиваемого диспетчера авторизации утверждений. Вызывается функция, которая вычисляет субъект на основе ресурса и действия, указанного AuthorizationContext в . Эта функция возвращает значение true или false, которое предоставляет или запрещает доступ к субъекту.

static Dictionary<ResourceAction, Func<ClaimsPrincipal, bool>> _policies = new Dictionary<ResourceAction, Func<ClaimsPrincipal, bool>>();
PolicyReader _policyReader = new PolicyReader();
    /// <summary>
    /// Checks if the principal specified in the authorization context is authorized to perform action specified in the authorization context 
    /// on the specified resoure
    /// </summary>
    /// <param name="pec">Authorization context</param>
    /// <returns>true if authorized, false otherwise</returns>
    public override bool CheckAccess(AuthorizationContext pec)
    {
        //
        // Evaluate the policy against the claims of the 
        // principal to determine access
        //
        bool access = false;
        try
        {
            ResourceAction ra = new ResourceAction(pec.Resource.First<Claim>().Value, pec.Action.First<Claim>().Value);

            access = _policies[ra](pec.Principal);
        }
        catch (Exception)
        {
            access = false;
        }

        return access;
    }
}

В следующем XML-коде показан пример политики авторизации, указанной в конфигурации. В первой политике субъект должен обладать одним из указанных утверждений, чтобы выполнить указанное действие с указанным ресурсом. Во второй политике субъект должен обладать обоими утверждениями, чтобы иметь возможность выполнять указанное действие с указанным ресурсом. Во всех остальных субъектам автоматически предоставляется доступ независимо от требований, которыми он обладает.

<system.identityModel>
  <identityConfiguration>
    <claimsAuthorizationManager type="ClaimsAuthorizationLibrary.MyClaimsAuthorizationManager, ClaimsAuthorizationLibrary">
      <policy resource="http://localhost:28491/Developers.aspx" action="GET">
        <or>
          <claim claimType="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" claimValue="developer" />
          <claim claimType="http://schemas.xmlsoap.org/claims/Group" claimValue="Administrator" />
        </or>
      </policy>
      <policy resource="http://localhost:28491/Administrators.aspx" action="GET">
        <and>
          <claim claimType="http://schemas.xmlsoap.org/claims/Group" claimValue="Administrator" />
          <claim claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country" claimValue="USA" />
        </and>
      </policy>
      <policy resource="http://localhost:28491/Default.aspx" action="GET">
      </policy>
      <policy resource="http://localhost:28491/" action="GET">
      </policy>
      <policy resource="http://localhost:28491/Claims.aspx" action="GET">
      </policy>
    </claimsAuthorizationManager>

    ...

  </identityConfiguration>
</system.identityModel>

Комментарии

Класс AuthorizationContext представляет контекст, используемый диспетчером авторизации утверждений , реализацией ClaimsAuthorizationManager класса , чтобы определить, должен ли субъект (субъект) быть авторизован для выполнения указанного действия с заданным ресурсом. Диспетчер авторизации утверждений оценивает контекст авторизации в методе CheckAccess и либо запрещает, либо предоставляет доступ на основе утверждений, представленных субъектом.

Свойство Principal содержит субъект, для которого запрашивается авторизация, Resource свойство содержит ресурс, на котором авторизоваться субъект, а Action свойство содержит действия, которые субъект намерен выполнить с ресурсом. И ресурс, и действие представлены в виде коллекции утверждений; однако в большинстве случаев каждая коллекция содержит одно утверждение.

Конструкторы

AuthorizationContext(ClaimsPrincipal, Collection<Claim>, Collection<Claim>)

Инициализирует новый экземпляр класса AuthorizationContext с указанным субъектом, требованием ресурса и требованием действия.

AuthorizationContext(ClaimsPrincipal, String, String)

Инициализирует новый экземпляр класса AuthorizationContext с указанным субъектом, именем ресурса и именем действия.

Свойства

Action

Получает действие, для которого должен быть авторизован субъект.

Principal

Получает субъект, для которого запрашивается авторизация.

Resource

Получает ресурс, на котором должен быть авторизован субъект.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к