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

时间:2016-05-23 13:24:25

标签: php oauth-2.0 office365 multi-tenant office365api

我试图授权我的多租户saas网络应用与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

1 个答案:

答案 0 :(得分:0)

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

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