管理员如何仅针对应用程序注册授予特定用户访问权限?

时间:2019-11-12 17:15:23

标签: azure azure-active-directory outlook-restapi azure-authentication

我有一个由these steps之后创建的,由证书保护的Azure应用注册。在获得Outlook.com邮件,日历和联系人API的管理员同意后,即可设置“应用注册”,这样就可以为租户内的任何用户获取OAuth访问令牌,而无需单个用户采取任何行动(即,无需单个用户签名,或需要同意)。

从“应用程序注册”中获取访问令牌的代码如下:

var cert = new X509Certificate2(<certFromSecureLocation>)
var clientCredential = new ClientAssertionCertificate(<ApplicationId>, cert);
var authContext = new AuthenticationContext("https://login.windows.net/somecompany.com");
var result = await authContext.AcquireTokenAsync("https://outlook.office.com", clientCredential);
var accessToken = result.AccessToken;

使用访问令牌,可以向租户内的任何用户请求Office API,例如:

GET https://outlook.office.com/api/v2.0/users/any.user@somecompany.com/MailFolders
Host: outlook.office.com
X-AnchorMailbox: any.user@somecompany.com
Authorization: Bearer <ACCESS_TOKEN>
Accept: application/json
Accept-Encoding: gzip, deflate

是否可以设置应用程序注册,以便管理员可以为特定用户或组授予对API的同意,从而可能不会公开所有用户的所有数据?还是有一种方法可以从应用注册中排除用户或组,以使OAuth访问令牌无法用于其帐户?

或者是否存在一种完全不同的方法,它们可以实现相同的结果,即能够获得管理员授予的一组用户的访问令牌,而无需最终用户交互?

This article似乎在解决方案的正确位置,但似乎不适用于这种特定类型的设置。我可以为User assignment required启用“应用程序注册”,并为其分配一组特定的用户,但是仍然可以为租户中的任何用户使用访问令牌。

1 个答案:

答案 0 :(得分:2)

恐怕没有这种方法可以访问一组用户。如果访问令牌包含A许可,它将能够访问A许可所允许的所有数据。