2013-08-30 2 views
6

I установка и приложение MVC 4 и добавленная аутентификация на нашем сервере Azure AD, как описано здесь: http://msdn.microsoft.com/en-us/library/windowsazure/dn151790.aspxКак я могу получить роли от AD с аутентификацией MVC Azure AD?

Аутентификация работает как ожидалось. Однако по умолчанию я не получаю никаких ролей. Должно быть создано несколько групп AD, и я хотел бы использовать их для роли, ограничивающих приложение с помощью атрибута [Authorize] в MVC.

Я не могу найти хорошее место, чтобы даже начать понимать это. Может ли кто-нибудь дать мне схему или указать мне хороший учебник?

Следует отметить, что я не являюсь администратором нашей учетной записи Azure, поэтому мне нужно сообщить администратору, что делать, если с этой стороны требуется какая-либо настройка.

ответ

9

Во-первых, токены, возвращенные Azure AD, в настоящее время не содержат претензий к ролям или группам, поэтому вам нужно получить их из API-интерфейсов Graph. Во-вторых, роли в Azure AD, которые возвращаются API-интерфейсом Graph, не обязательно предназначены для использования в приложении ISV/LoB, и в целом вместо этого вы должны использовать группы безопасности для авторизации. Чтобы выполнить авторизацию, вы должны использовать операции checkMemberGroups или getMemberGroups в Graph API, которые являются транзитивными и действительными для этой цели.

Если вы проверите следующие ресурсы на заказ, я думаю, на ваши вопросы будет дан ответ. Вы узнаете, как для проверки подлинности на графику, вызовите его, и настроить приложение, чтобы использовать результат операции группы для выполнения авторизации:

6

Шон ответ немного устарел. Теперь вы можете настроить Azure AD, чтобы он включал группы или роли в токенах JWT, поэтому он будет включен в ClaimsPrincipal.Current.Claims, поэтому будет работать стандартный атрибут [Authorize(Roles = "yourRoleName")].

Here описание товара сообщение. Какие в основном говорит, у вас есть два варианта:

  1. Используйте группы утверждают - вы должны изменить groupMembershipClaims значения в манифесте приложении, а затем в приложении вы можете проверить ClaimsPrincipal.Current.FindFirst("groups").Value видеть в какой группу пользователя (вы получите только идентификатор группы). Вы можете написать свой собственный атрибут Authorize, который использует это.more info

  2. Определение ролей для вашего приложения, а затем использовать обычный код для тестирования, если пользователь находится в роли:

    [PrincipalPermission(SecurityAction.Demand, Role = “yourRoleName”)]

    [Authorize(Roles = “yourRoleName”)]

    if (ClaimsPrincipal.Current.IsInRole(“yourRoleName”)) { //do something }

    Вы должны редактировать роли в вас манифест приложения. Дополнительная информация here и here. Значения должны были быть установлены в манифесте описаны here

Что действительно странно, что вы не можете назначить несколько ролей в группе с веб-страницы Azure. Для этого вам нужно использовать azure graph api.

Если вы не видите вкладку Users and Groups на портале Azure, вам, возможно, понадобится Azure AD Basic или Premium edition. Если вы работаете над бесплатной подпиской на лазурную печать, вы можете использовать free Azure AD Premium trial для тестирования.

Смежные вопросы