авторизация с использованием информации о Microsoft Grahp API - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь добиться авторизации путем получения информации о группе из Microsoft Graph API.

(https://docs.microsoft.com/en-us/graph/api/user-list-memberof?view=graph-rest-1.0&tabs=http)

Итак, в основном, в asp. net MVC Проект Web API Controller, у меня есть контроллер продуктов, он вернет ниже данные клиенту angular и теперь будет отображаться в выпадающем списке

[
{id: "864", text: "Sports", name: "145028", type: null, description: ""},
{id: "593", text: "Beauty", name: "111111", type: null, description: ""},
{id: "616", text: "Home", name: "33000D", type: null, description: ""},
]

, сейчас я хочу скрыть это информация о продукте, основанная на назначении группы пользователей, например, если пользователю назначено назначение ниже группы, тогда должен быть виден только спортивный элемент. "id": "864-Sport",

{
  "value": [
    {
      "@odata.type": "#microsoft.graph.group",
      "id": "864-Sport",
      "createdDateTime": null,
      "description": "All users at the company",
      "displayName": "All Users",
      "groupTypes": [],
      "mailEnabled": false,
      "securityEnabled": true,
    }
  ]
} 

Для достижения этой цели я планирую сделать следующее:

enter image description here

Que # 1: Теперь я не уверен, как выделено желтое поле, как я могу использовать свой информационный объект группы для всех имеющихся у меня контроллеров (около 25)? При рассмотрении рекомендаций API restful.

Que # 2: Или как вы добиться этого лучше - если мой подход неверен, я планирую сделать на стороне сервера, потому что в будущем, если у нас будет еще один клиент (скажем, мобильное приложение), он будет поддерживать это.

Que3: Это хорошая идея, чтобы получить токен также на стороне сервера, а не на клиенте?

Заранее спасибо.

1 Ответ

0 голосов
/ 12 февраля 2020

Que # 1: Теперь я не уверен, как выделено желтое поле, как я могу использовать свой информационный объект группы для всех имеющихся у меня контроллеров (около 25)? при рассмотрении директивы restful API.

Ответ: Поскольку существует angular интерфейс, вы можете сохранить его в сеансе. Сессия используется для сохранения данных в одном сеансе между клиентом и сервером. Если клиент начнет новый сеанс (перезапустите браузер), будет запущен новый сеанс, и вы вызовете Graph API, чтобы снова получить все группы.

Вы также можете использовать cook ie или кэш redis, который все еще может быть доступен, если клиент начинает новый сеанс.

Que # 2: Или как добиться этого лучше путь? если мой подход неправильный ?, я планирую сделать на стороне сервера, потому что в будущем, если у нас будет еще один клиент (скажем, мобильное приложение), он будет поддерживать это.

Ответ: Я думаю, что ваш подход хорош.

Que3: Это хорошая идея, чтобы получить токен также на стороне сервера, а не на клиенте?

Ответ: Да, это так. Клиент просто получает токен (называемый токеном А) для доступа к вашему веб-API. Затем сервер получает другой токен (называемый токеном B) для клиента.

Токен A имеет ограниченное разрешение только для вашего веб-API. В этом случае клиент не будет напрямую получать токен для доступа к целевому API (Graph API и т. Д.). Бизнес логи c разработан в вашем веб-API. Таким образом, это предотвращает неправильное использование клиентами токенов (токен B) для выполнения запрещенных операций.

Он называется On-Behalf-Flow . И для вашего лучшего понимания есть официальный пример: ms-identity-as pnet -webapi-onbehalfof

...