繁体   English   中英

如何实施Office365 API的管理员同意和用户同意

[英]How to implement admin consent and user consent for Office365 API

我正在尝试授权我的多租户saas Web应用程序与Office 365帐户进行通信。 好吧,显然我的应用程序需要管理员同意,因为权限,所以我必须实现它。

但我也想让用户同意,所以他可以进入他的帐户并在管理员同意后点击“授权”。

我该如何实现? 已经有一个授权流程,但它只是授权每个用户(当时完全不知道管理员同意的想法)。 当非管理员尝试授权他的帐户时,他会收到错误“此操作只能由管理员执行”。 当管理员完成此操作时,它会授权他们,当管理员通过管理员同意时,它仍然只是授权他们。 普通用户仍然会收到该错误。

这些是我的应用程序请求的权限:

  • Calendars.Read
  • Calendars.ReadWrite
  • Contacts.ReadWrite
  • Mail.ReadWrite
  • Mail.Send
  • Tasks.ReadWrite

这是我们为它存储的数据:

user_id
access_token
expires_on
resource
refresh_token
scope
id_token

我只是基本熟悉oauth 2.0,这也无济于事。

我已经在文章,论坛问题,帮助指南和文档中写了几个星期了。 救命。

更新:所以我想我可能需要在我的数据中添加一个is_admin标志? 因此,当管理员同意时,我会保存所有上述字段以及is_admin => 1 因此,当标准用户同意办公室365时,我的应用程序将检查他们的帐户是否具有is_admin的oauth访问令牌,这意味着它已被帐户管理员授权,我可以继续授权他们。

我变暖了吗?

登录网址:

https://login.microsoftonline.com/common/oauth2/authorize?
response_type=code
&client_id={my_client_id}
&redirect_uri=https%3A%2F%2Fapp.example.com%2Fintegrations%2Foffice-auth&state=V6diTW2TaHl1Zpawg1AFub7fWtKfGnyl1464023103
&resource=https%3A%2F%2Foutlook.office365.com%2F
&prompt=consent

修复。 它是Azure中的应用程序权限(与委派权限相对)。 它具有“读写所有邮箱”,以及其他几个基本上授予访问组织中所有用户权限的邮箱。

删除它,用户授权有效,我甚至不需要管理员同意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM