Была ли эта страница полезной?
Ваш отзыв об этом контенте важен для нас. Расскажите нам о том, что вы думаете.
Дополнительный отзыв?
1500 символов осталось
Экспорт (0) Печать
Развернуть все
Развернуть Свернуть

Инструкции Реализация управления доступом на основе ролей (RBAC) в веб-приложениях ASP.NET с поддержкой утверждений с помощью WIF и ACS

Опубликовано: Апрель 2011 г.

Обновлено: Июнь 2015 г.

Назначение: Azure

  • Microsoft Azure Active Directory Access Control (также называется Access Control Service или ACS)

  • Windows® Identity Foundation (WIF)

  • ASP.NET

В этой статье описывается, как реализовать управление доступом на основе ролей (RBAC) в веб-приложениях ASP.NET с поддержкой утверждений, используя WIF и Служба управления доступом.

  • Цели

  • Обзор

  • Сводка действий

  • Шаг 1. Создание простого веб-приложения ASP.NET с поддержкой утверждений

  • Шаг 2. Настройка утверждений ролей в ACS

  • Шаг 3. Реализация проверок ролей в веб-приложении ASP.NET

  • Шаг 4. Реализация преобразования утверждений с помощью настраиваемого ClaimsAuthenticationManager

  • Шаг 5. Проверка

  • Связанные элементы

  • Настройка утверждений ролей с помощью Служба управления доступом.

  • Преобразование утверждений ролей с помощью ClaimsAuthenticationManager.

  • Реализация проверок управления доступом на основе ролей с помощью метода IsInRole и атрибутов PrinciaplPermission.

Управление доступом на основе ролей (RBAC) — это широко распространенный метод ограничения доступа в приложениях. В приложениях ASP.NET этот подход реализуется с помощью метода IsInRole, атрибута PrincipalPermission, или требований, которые доступны начиная с ASP.NET 1.0. Вы можете использовать для авторизации утверждения, применяя известные методы и одновременно новые технологии, такие как WIF и Служба управления доступом. Среду выполнения WIF и пакет SDK можно скачать здесь:

  • Шаг 1. Создание простого веб-приложения ASP.NET с поддержкой утверждений

  • Шаг 2. Настройка утверждений ролей в ACS

  • Шаг 3. Реализация проверок ролей в веб-приложении ASP.NET

  • Шаг 4. Реализация преобразования утверждений с помощью настраиваемого ClaimsAuthenticationManager

  • Шаг 5. Проверка

На этом шаге вы создадите простое веб-приложение ASP.NET, которое будет использоваться в качестве основы для реализации RBAC.

  1. Запустите Visual Studio с использованием параметра "Запуск от имени администратора". Это необходимо для WIF.

  2. Создайте пустое веб-приложение ASP.NET.

  3. Добавьте веб-форму ASPX и задайте ее имя, например default.aspx.

На этом шаге показано, как настроить утверждения ролей на портале управления Служба управления доступом с помощью групп правил. Полное пошаговое руководство см. в разделе Инструкции Реализация логики преобразования маркеров с помощью правил.

  1. На странице Изменение приложения проверяющей стороны прокрутите экран к разделу Группы правил и щелкните ссылку для нужной группы. Убедитесь, что она выбрана.

  2. На странице Изменение группы правил перейдите к разделу Правило и щелкните ссылку Добавить правило.

  3. На странице Добавление правила утверждения перейдите к разделу Тип выходного утверждения, щелкните переключатель Выбрать тип, а затем выберите следующий тип утверждения.

    http://schemas.microsoft.com/ws/2008/06/identity/claims/role
    
    
  4. В разделе Значение выходного утверждения щелкните Ввести значение, а затем введите следующий текст в поле:
    User (Пользователь)

  5. При необходимости (рекомендуется) добавьте описание и нажмите кнопку Сохранить.

Вы настроили утверждение роли User, которое можно добавить в любой токен. Сценарий может отличаться в зависимости от ваших требований. Дополнительные сведения о настройке более сложных правил см. в разделе Инструкции Реализация логики преобразования маркеров с помощью правил.

На этом шаге показано, как реализовать RBAC.

  1. Добавьте ссылку на сборку Microsoft.IdentityModel.

  2. Откройте код файла default.aspx.cs.

  3. Добавьте следующие инструкции using:

    using System.Security.Permissions;
    using System.Threading;
    using Microsoft.IdentityModel.Claims;
    using System.Security;
    
    
  4. Добавьте в обработчик событий Page_Load следующее требование безопасности. Этот атрибут проверяет, назначен ли текущий пользователь роли User. Если это не так, вызывается исключение.

    [PrincipalPermission(SecurityAction.Demand, Role = "User")]
    
  5. Добавьте следующий код в обработчик событий Page_Load. Он соответствует требованию, выраженному в коде.

    PrincipalPermission p = new PrincipalPermission(null, "User");
       p.Demand();
    
    
  6. Добавьте следующий код в событие Page_Load. В отличие от предыдущего фрагмента кода этот фрагмент не вызывает исключение. Вместо этого IsInRole возвращает логическое значение, указывающее, назначен ли текущий пользователь указанной роли.

    if (!User.IsInRole("User"))
                    throw new SecurityException("Access is denied.");
    
    
  7. Законченный код должен выглядеть примерно так:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    using System.Security.Permissions;
    using System.Threading;
    using Microsoft.IdentityModel.Claims;
    using System.Security;
    
    namespace WebIsInRoleACS
    {
        public partial class _default : System.Web.UI.Page
        {
            //THIS SHOULD THROW AN EXCEPTION
            [PrincipalPermission(SecurityAction.Demand, Role = "User")]
            protected void Page_Load(object sender, EventArgs e)
            {
    
                //THIS SHOULD THROW AN EXCEPTION
                PrincipalPermission p = new PrincipalPermission(null, "User");
                p.Demand();
    
                //THIS RETURNS BOOL
                if (!User.IsInRole("User"))
                    throw new SecurityException("Access is denied.");
            }
        }
    }
    
    

Этот шаг не является обязательным. На этом шаге показано, как преобразовать утверждения с помощью ClaimsAuthenticationManager, входящего в конвейер WIF, который выполняется в контексте приложения ASP.NET, в отличие от правил преобразования утверждений, которые выполняются в Служба управления доступом, как описано в разделе Шаг 2. Настройка утверждений ролей в ACS .

  1. Добавьте проект Библиотека классов в решение Visual Studio, и укажите для него имя, например MyClaimsTransformationModule.

  2. Добавьте ссылку на сборку Microsoft.IdentityModel.

  3. Добавьте ссылку на сборку System.IdentityModel.

  4. Создайте новый класс и укажите для него имя, например ClaimsTransformationModule.

  5. Добавьте в него следующие объявления.

    using Microsoft.IdentityModel.Claims;
    using System.Security.Principal;
    
    
  6. Создайте класс, производный от типа ClaimsAuthenticationManager.

  7. Переопределите метод Authenticate класса (в нем будет реализовано преобразование утверждений). Код метода Authenticate может быть основан на следующем коде.

    if (incomingPrincipal != null && incomingPrincipal.Identity.IsAuthenticated == true)
    {
        //DECIDE ON SOME CRITERIA IF CURRENT USER DESERVES THE ROLE
        //IClaimsIdentity identity = (IClaimsIdentity)incomingPrincipal.Identity;
        ((IClaimsIdentity)incomingPrincipal.Identity).Claims.Add(
            new Claim(ClaimTypes.Role, "Admin"));
    }
    return incomingPrincipal;
    
    
  8. Перейдите к приложению ASP.NET и настройте ClaimsAuthenticationManager в файле web.config.

      <microsoft.identityModel>
        <service>
          <claimsAuthenticationManager type="MyClaimsTransformationModule.ClaimsTransformationModule, MyClaimsTransformationModule" />
    
    
  9. Убедитесь, что приложение может найти созданную сборку. Самый простой способ — разместить ее в папке bin приложения.

На этом шаге показано, как проверить, работает ли решение. Нажмите кнопку F5. Веб-приложение ASP.NET должно запуститься в режиме отладки (вы можете добавить точки останова, чтобы проверить выполнение кода в Visual Studio). Сначала вы попадете на страницу проверки подлинности поставщика удостоверений, настроенного для федерации. После завершения проверки подлинности вы должны попасть на страницу Default.aspx без исключения, т. е. все необходимые требования безопасности роли User.

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2015 Microsoft