【问题标题】:Connecting to exchange online using Microsoft Graph APIs through a Demon application通过 Demon 应用程序使用 Microsoft Graph API 连接到在线交换
【发布时间】:2019-11-26 23:29:01
【问题描述】:

我正在尝试使用 Microsoft Graph API 1.0 连接以进行在线交流并对电子邮件进行某些操作,而这一切都是在一个恶魔程序中完成的。我正在使用客户端凭据工作流程进行身份验证,下面是一小段代码

AuthenticationContext authenticationContext = new AuthenticationContext(string.Format(CultureInfo.InvariantCulture, azureEndPoint, tenant));
            ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
            AuthenticationResult authenticationResult = await authenticationContext.AcquireTokenAsync(resource, clientCredential);

但要让这段代码返回身份验证令牌,我必须针对 microsoft graph api 获取 Azure 应用程序 ID 的应用程序权限。这里需要注意的是,如果授予权限,应用程序 ID 将有权读取组织中所有用户的电子邮件,因此租户管理员严格拒绝授予权限。

我尝试了同意框架的运气,但这需要用户干预才能输入他/她的 ID 和密码,这在恶魔程序的情况下是不可能的。我读了一些像下面这样的博客,但他们最终都输入了用户 ID 密码来访问重定向 url,这打败了整个恶魔的东西 https://blogs.msdn.microsoft.com/exchangedev/2015/01/21/building-daemon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-credential-flow/

有什么方法可以为租户中的特定电子邮件 ID 授予对 Azure 应用程序 ID 的读/写访问权限?或者有什么聪明的方法可以在没有用户干预的情况下以某种方式到达邮箱?

提前致谢,

维韦克

【问题讨论】:

    标签: azure-active-directory office365 microsoft-graph-api exchange-server outlook-restapi


    【解决方案1】:

    您只能将应用权限与客户端凭据授予流程一起使用。

    要仅访问特定用户的电子邮件,您必须采用不同的方法。 这确实需要每个用户单独同意。

    让用户登录您的应用,并要求同意才能访问他们的电子邮件。 返回您的应用程序后,获取刷新令牌并将其安全存储。 刷新令牌是用户特定的。 然后在您的守护程序服务中,您使用他们的刷新令牌为每个用户获取一个访问令牌。 如果由于刷新令牌已失效而导致获取失败, 需要通知用户再次登录。

    【讨论】:

    • Junnas - 它是一个连接到共享电子邮件 ID 的纯后台服务,因此用户登录到应用程序会立即被排除在外。我已经在应用程序端实现了同意框架,因为客户端始终可以输入凭据并授予访问权限。这里的问题是我是否可以获得特定电子邮件 ID 的 azure 应用 ID 的应用程序权限?或者以某种方式使用同意框架,但没有用户输入任何 ID/通行证。谢谢
    • 同意框架不允许这种情况,至少现在不允许。
    • 感谢 junnas,您是否遇到过授予任何特定电子邮件 ID 的应用程序权限?因为 azure id 可以完全访问租户中的所有内容是没有意义的,所以我猜一定有一些分组选项?
    【解决方案2】:

    这个问题现在得到了解决,因为微软引入了一个新概念,即使用组策略将应用程序权限限制到特定邮箱或邮箱集。在这里查看https://docs.microsoft.com/en-us/auth-limit-mailbox-access

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-20
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多