我有一个客户端应用程序( 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
}
对于单个租户,一切正常,因为我会知道租户ID (我在令牌网址中明确设置了租户ID)
现在,我需要将此应用程序转换为访问多租户(多个租户)的邮件。用户可以位于租户A或租户B中。
对于我的客户端应用程序,如果是多租户,我将只知道用户ID(拨打电话时不知道租户ID)
注意事项
我是两个租户的管理员。
没有用户干预,应在Azure门户网站本身中给予同意(不能基于用户登录)。
当客户端应用程序作为守护程序服务运行时,我只能使用 client_credentials 身份验证流
我不确定我的应用程序是否属于多租户类别。 有人可以请我帮忙吗?我可以在清单文件中做什么?我可以使用哪种型号?