Ресурсная авторизация с Azure AD? - PullRequest
0 голосов
/ 25 февраля 2019

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

Например, пользователь A может только читать и обновлять запись 1, но пользователь B может читать, обновлять и удалять записи 1, 2 и 3, а пользователь C может выполнять все операции со всеми записями.

Как, если вообще, это можно сделать с помощью Azure AD?

Очевидно, что использования ролей приложений недостаточно, поскольку это дает пользователю единые права доступа ко всем записям.

Арендатор также неполезно, потому что это одинаково для всех пользователей (в этом примере).

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

Существует ли стандартный способ работы с этим типом авторизации на основе ресурсов?

1 Ответ

0 голосов
/ 25 февраля 2019

Как вы правильно заметили, доступ или авторизация на основе ролей являются очень общими, и с их помощью пользователь с определенной ролью получает доступ (или получает отказ в доступе) ко всем ресурсам.(Если ваш sceanrio позволяет, вы можете сделать его немного лучше, разделив ресурсы на несколько типов и предоставив доступ для 1 или более типов ресурсов к 1 или более ролям).

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

В конце концов, все сводится к сопоставлению, которое необходимо поддерживать между 3 вещами

  • Ресурс (или набор ресурсов)
  • Объект Azure AD (например, роль, группа, отдельный пользователь, которому предоставляется разрешение)
  • Разрешение, которое вы даете (понимается и применяетсяваше приложение, например, Blogs.Create разрешение для приложения блогов)

Соответствующая документация доступна в документах Microsoft

Авторизация на основе ролей и ресурсов

Эта документация рассказывает о похожих концепциях и показывает хороший пример, в котором используются как роли, так и ресурсы.Операции CRUD над ресурсами на основе ролей, а затем специальные привилегии для конкретного ресурса для владельца этого ресурса (т. Е. На основе ресурсов)

Примеры кода

  1. Код приложения мультитенантного опроса

    База кода для ссылки на документацию выше

  2. Авторизация в веб-приложении с использованием групп Azure AD& групповые заявки

    Это пример приложения для отслеживания задач, где пользователи могут делиться задачами с другими пользователями или группами Azure AD.Снова вы увидите соответствие между ресурсами (т. Е. Задачами в данном случае) и объектами Azure AD (т. Е. Пользователями или группами) в образце базы данных.

Назначение ролей приложенийдля групп

Поскольку вы упомянули об этом как часть своего вопроса, просто сообщите, что это возможно на портале Azure, но только если у вас есть лицензия Azure AD Premium (я не уверен, какие именноподдержите его, но воспользуйтесь функцией групповых назначений, и вы ее найдете.)

...