Microsoft Graph Api-在Java中没有用户的情况下访问

时间:2020-05-14 21:00:24

标签: java microsoft-graph-api microsoft-graph-mail

我在使用Microsoft图形API进行身份验证时遇到问题。我从不使用它。 我尝试编写负责从邮件下载附件的应用程序。

该程序将从平台安排,因此无法获得管理员同意(因此使用客户端凭据进行授权)。 我发现的每个代码示例都需要用户交互才能在Microsoft上签名以获取令牌。

我从公司的管理员那里收到以下物品: clientID,tenantID,应用程序名称,邮箱地址 和权限EWS.AccessAsUser.All(我是否应该请求Mail.Read权限?邮箱可以轻松地迁移到0365。如果我很了解EWS是否可以交换)

我想连接到邮箱并下载附件。 是否可以通过clientID,tenantID接收身份验证?有提供者吗?没有用户交互就可以获得令牌?

1 个答案:

答案 0 :(得分:2)

您可以使用Microsoft Graph Java SDK获得仅应用令牌。

ClientCredentialProvider authProvider = new ClientCredentialProvider(
            this.clientId,
            this.scopes,
            this.clientSecret,
            this.tenantId,
            this.endpoint);
IGraphServiceClient graphClient = GraphServiceClient
            .builder()
            .authenticationProvider(authProvider)
            .buildClient();

您可以在java spring webhook sample中找到完整的示例。但是,由于身份验证SDK为described here,因此需要引起注意。

您需要请求的许可权是应用程序注册门户中Mail.ReadApplication Permission类型的Microsoft Graph。添加该权限后,请不要忘记单击权限列表顶部的Grant admin consent for XXX按钮(如果没有UI流程,这就是授予权限的方式)。

最后,EWS是与Microsoft Graph分开的API,在这种情况下,您不需要任何许可。