MSAL и Graph API - доступ к календарю пользователя без взаимодействия с пользователем?

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

Однако нам нужно развернуть это приложение в 300 комнатах. Отправка технического специалиста в каждую комнату и вход в учетную запись каждой комнаты и предоставление доступа очень затратны. Кроме того, если когда-либо токен обновления или доступа устареет или будет отозван, мы должны отправить специалиста в конференц-зал. Некоторые конференц-залы находятся в зданиях, где в городе нет техники.

Есть ли способ сделать это централизованно? Чтобы получить токен доступа для пользователя с предоставленными разрешениями, а затем передать его нашему приложению?

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


person LostException    schedule 18.06.2020    source источник


Ответы (1)


Я считаю это интересным вопросом. вот документация о том, как этого добиться: https://docs.microsoft.com/en-us/graph/auth-limit-mailbox-access
Вы можете использовать секретную аутентификацию приложения, но с ее помощью вы можете ограничить, к каким почтовым ящикам могут обращаться вызовы графа. Я считаю, что это был бы самый элегантный способ.

person alphaz18    schedule 18.06.2020
comment
Спасибо. Мы видели этот документ и реализовали его. Это близко, но не до конца, поскольку одна политика применяется ко всему приложению для клиента. Это означает, что в моем примере каждая учетная запись, используемая в комнате, может видеть учетные записи другой комнаты. - person LostException; 22.06.2020
comment
это правильно, но действительно ли это важно? поскольку они являются общедоступными киосками, в худшем случае они могут видеть расписания других общедоступных киосков .. в своем коде вы можете просто сгенерировать идентификатор устройства, а затем сопоставить его с почтовым ящиком. но кроме этого. единственный другой поток, который вы можете использовать, - это поток ROPC docs.microsoft.com/en-us/azure/active-directory/develop/, но в соответствии с инструкциями вы никогда не должны хранить учетные данные ... - person alphaz18; 23.06.2020