【问题标题】:Office 365 Mail API: Admin access token to access everyone's emailsOffice 365 邮件 API:用于访问每个人的电子邮件的管理员访问令牌
【发布时间】:2016-08-30 11:59:43
【问题描述】:

我是否可以使用 Office 365 邮件 API 访问公司内所有人的电子邮件?我知道我可以访问个人,但帽子要求我有权访问他们的电子邮件并获取他们的访问令牌。我希望能够拥有管理员访问令牌并能够访问每个人的电子邮件。任何想法是否可能?

【问题讨论】:

    标签: azure oauth-2.0 azure-active-directory office365api


    【解决方案1】:

    这是可能的。我们可以注册一个 Web 应用程序和/或 Web API(默认,在 OAuth2 用语中称为机密客户端)并构建一个守护程序服务来检索所有消息以供组织使用。

    这是一个使用客户端凭据请求令牌并从不同用户获取消息的示例:

    string authority = "https://login.microsoftonline.com/msdnofficedev.onmicrosoft.com";
            string resource = "https://Graph.microsoft.com";
            string clientID = "";
            string clientSecret = "";
            AuthenticationContext ac = new AuthenticationContext(authority);
            AuthenticationResult ar = ac.AcquireToken(resource, new ClientCredential(clientID, clientSecret));
    
            HttpClient hc = new HttpClient();
            hc.DefaultRequestHeaders.Add("Authorization", "Bearer " + ar.AccessToken);
            HttpResponseMessage hrm = await hc.GetAsync("https://Graph.microsoft.com/v1.0/users/fx@msdnofficedev.onmicrosoft.com/messages/");
            string content=await hrm.Content.ReadAsStringAsync();
            MessageBox.Show(content);
    
            HttpResponseMessage hrm2 = await hc.GetAsync("https://Graph.microsoft.com/v1.0/users/user1@msdnofficedev.onmicrosoft.com/messages/");
            content = await hrm2.Content.ReadAsStringAsync();
            MessageBox.Show(content);
    

    有关在 Azure AD 中注册应用程序的更多详细信息,您可以点击以下链接: https://azure.microsoft.com/en-us/documentation/articles/active-directory-integrating-applications/#BKMK_Native

    【讨论】:

    • 在构建守护服务之后,还有没有办法同时为所有用户设置 Notification Webhook ? dev.outlook.com/restapi/concepts/webhooks。我们计划在有入站电子邮件时使用此 webhook 调用我们的 REST API,以便我们可以根据需要进行过滤。谢谢。
    • 没有。 Office 365 webhook 是用户级的。如果您需要此功能,可以通过here 提交反馈。
    • 谢谢!即我们必须为每个用户设置 webhook 吗?如果是这样,它是否可以通过编程方式实现?在这种情况下,每次在我们的系统中注册新用户时,我们都可以自动创建一个 webhook 订阅。你明白我的意思了吗?
    • 顺便说一句,这是什么代码库? C# ?我正在尝试使用 Java 实现相同的功能,但找不到 AuthenticationContext 的引用。你在用什么图书馆?谢谢
    • 是的,代码示例是使用 C# 使用 Azure Active Directory 编写的。您可以从 here 找到 Java 库。
    猜你喜欢
    • 1970-01-01
    • 2016-09-13
    • 2015-06-10
    • 2015-04-05
    • 1970-01-01
    • 2017-06-19
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多