我使用Microsoft的ActiveDirectory GraphClient库来访问Azure AD。
我的问题是:
我想知道 IUser对象是否具有对其他用户的Office 365邮箱的完全访问权限。
void bool HasFullAccess(IActiveDirectoryClient client, IUser currentUser, IUser otherUser)
{
if (currentUser.ObjectId == otherUser.ObjectId)
{
return true;
}
//TODO: HOW-TO CHECK IF 'currentUser' HAS FULL ACCESS
// TO MAILBOX OF 'otherUser'
}
答案 0 :(得分:0)
非常好的问题,您希望根据您的情况同时查看full_access_as_user
和full_access_as_app
。获得用户的访问令牌后,您应该查看Outlook REST API中记录的一些API调用。
答案 1 :(得分:0)
有两种方法可以检查用户是否可以访问其他用户的邮箱:
EWS托管API
如果您有权访问其他用户的邮箱,则可以通过以下方式获取数据:
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = new WebCredentials("user_with_access@example.com", "PASSWORD");
service.TraceEnabled = true;
service.TraceFlags = TraceFlags.All;
service.AutodiscoverUrl("user_with_access@example.com", RedirectionUrlValidationCallback);
var userMailbox = new Mailbox("target_user@example.com");
var folderId = new FolderId(WellKnownFolderName.Inbox, userMailbox);
var itemView = new ItemView(20); // page size
var userItems = service.FindItems(folderId, itemView);
foreach (var item in userItems)
{
// do something with item (nb: it might not be a message)
}
以上代码需要用户的凭证。如果您无权访问目标用户的邮箱,则上面的代码会抛出错误,例如“流程未能获得正确的属性”。
PowerShell的
通过运行Get-MailboxPermission cmdlet,您可以检查哪个用户/邮箱具有访问Exchange中其他邮箱的权限类型:
Get-Mailbox <Mailbox> | Get-MailboxPermission -User <AD User>
您可以调用powershell在您的应用程序中进行检查。