Как получить доступ к многопользовательским данным в Azure? Миграция от одного арендатора к нескольким арендаторам
У меня есть клиентское приложение (служба deamon), которое извлекает сообщения из одного почтового ящика клиента.
Я использую механизм проверки подлинности client_credenatials (сертификат) для связи с зарегистрированным приложением в Azure.
График разрешения на доступ к почте также предоставляется в Azure администратором, поэтому нет никакого вмешательства пользователя для получения согласия.
token_url -https://login.microsoftonline.com/{tenant_id}/oauth2/token
post request data = {
'resource': https://graph.microsoft.com/,
'client_id': client_id,
'client_assertion_type': 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer',
'client_assertion': assertion(),
'grant_type': 'client_credentials'
}
значение подтверждения rsa подписано значение этого заголовка и полезной нагрузки
client_assertion_header = {
'alg': 'RS256',
'x5t': thumbprint,
}
client_assertion_payload = {
'sub': client_id,
'iss' : client_id,
'jti' : GUID,
'exp' : ten_mins_from_now,
'nbf' : now,
'aud' : token_url
}
Для одного арендатора все работает идеально, как если бы я знал идентификатор клиента (я явно установил идентификатор клиента в URL-адресе токена)
Теперь мне нужно преобразовать это приложение для доступа к почте мультитенанта (более одного арендатора) . Пользователь может быть арендатором A или арендатором B.
Что касается моего клиентского приложения, я буду знать только идентификатор пользователя (а не идентификатор арендатора, когда я звоню) в случае мультитенанта
Что нужно иметь в виду
Я администратор обоих арендаторов.
Вмешательство пользователя не требуется, согласие должно быть дано на самом портале Azure (не может быть сделано на основании входа пользователя) .
Я могу использовать только поток аутентификации client_credentials, поскольку клиентское приложение работает как служба deamon
Я не уверен, что моя заявка относится к мультитенантной категории. Может кто-нибудь, пожалуйста, помогите мне, как поступить? Что-нибудь, что я могу сделать в файле манифеста? Какую модель я могу использовать?