Microsoft Graph Api - 在 java 中无需用户即可访问

Microsoft Graph Api - getting access without a user in java

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

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

我从我公司的管理员处收到以下项目: clientID、tenantID、app名称、邮箱地址 和权限EWS.AccessAsUser.All(我应该请求Mail.Read权限吗?邮箱可以很容易地迁移到0365。如果我很了解EWS是为了交换)

我想连接到邮箱并下载附件。 有什么方法可以通过 clientID, tenantID 接收身份验证?任何供应商存在?没有用户交互来获取令牌?

您可以使用 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. There's however a small caveat because of the authentication SDK as described here 中找到完整示例。

您需要申请的权限是申请注册门户中Microsoft Graph下类型Application PermissionMail.Read。添加该权限后,请不要忘记单击权限列表顶部的 Grant admin consent for XXX 按钮(如果您没有 UI 流程,这就是您授予权限的方式)。

最后,EWS 是独立于 Microsoft Graph 的 API,在你的情况下你不需要任何许可。

您可以使用下面的 Microsoft 使用 Java SDK 的代码参考获取访问令牌。

https://github.com/Azure-Samples/ms-identity-java-daemon/blob/master/msal-client-credential-secret/src/main/java/ClientCredentialGrant.java