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

问题描述 投票:1回答:1

我具有在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/[email protected]/MailFolders
Host: outlook.office.com
X-AnchorMailbox: [email protected]
Authorization: Bearer <ACCESS_TOKEN>
Accept: application/json
Accept-Encoding: gzip, deflate

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

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

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

azure azure-active-directory outlook-restapi azure-authentication
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.