通过 Demon 应用程序使用 Microsoft Graph API 连接以在线交换
Connecting to exchange online using Microsoft Graph APIs through a Demon application
我正在尝试连接在线交换并使用 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);
但是对于此代码 return 身份验证令牌,我必须针对 microsoft graph api 获得对 azure app id 的应用程序权限。这里需要注意的是,如果授予权限,应用程序 ID 将有权读取组织中所有用户的电子邮件,因此租户管理员已严格拒绝授予权限。
我尝试了同意框架的运气,但这需要用户干预才能输入 his/her 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/
有什么方法可以让 read/write 访问租户中特定电子邮件 ID 的 Azure 应用程序 ID?或者有什么聪明的方法可以在没有用户干预的情况下以某种方式进入邮箱?
提前致谢,
维维克
您只能将应用权限与客户端凭据授予流程一起使用。
要仅访问特定用户的电子邮件,您必须采用不同的方法。
这确实需要每个用户单独同意。
让用户登录您的应用,需要同意才能访问他们的电子邮件。
返回您的应用程序后,获取刷新令牌并将其安全存储。
刷新令牌是特定于用户的。
然后在您的守护程序服务中,您使用刷新令牌为每个用户获取一个访问令牌。
如果由于刷新令牌已失效而导致获取失败,
需要通知用户重新登录。
此问题现已解决,因为 Microsoft 引入了一个新概念,即使用组策略将应用程序权限限制为特定邮箱或一组邮箱。在这里查看 https://docs.microsoft.com/en-us/auth-limit-mailbox-access
我正在尝试连接在线交换并使用 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);
但是对于此代码 return 身份验证令牌,我必须针对 microsoft graph api 获得对 azure app id 的应用程序权限。这里需要注意的是,如果授予权限,应用程序 ID 将有权读取组织中所有用户的电子邮件,因此租户管理员已严格拒绝授予权限。
我尝试了同意框架的运气,但这需要用户干预才能输入 his/her 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/
有什么方法可以让 read/write 访问租户中特定电子邮件 ID 的 Azure 应用程序 ID?或者有什么聪明的方法可以在没有用户干预的情况下以某种方式进入邮箱?
提前致谢,
维维克
您只能将应用权限与客户端凭据授予流程一起使用。
要仅访问特定用户的电子邮件,您必须采用不同的方法。 这确实需要每个用户单独同意。
让用户登录您的应用,需要同意才能访问他们的电子邮件。 返回您的应用程序后,获取刷新令牌并将其安全存储。 刷新令牌是特定于用户的。 然后在您的守护程序服务中,您使用刷新令牌为每个用户获取一个访问令牌。 如果由于刷新令牌已失效而导致获取失败, 需要通知用户重新登录。
此问题现已解决,因为 Microsoft 引入了一个新概念,即使用组策略将应用程序权限限制为特定邮箱或一组邮箱。在这里查看 https://docs.microsoft.com/en-us/auth-limit-mailbox-access