我试图授权我的多租户saas网络应用与Office 365帐户进行通信。好吧,显然我的应用程序需要管理员同意,因为权限,所以我必须实现它。
但我也想让用户同意,所以他可以进入他的帐户并点击"授权"在管理员同意后。
我该如何实现?已经有一个授权流程,但它只是授权每个用户(当时完全不知道管理员同意的想法)。当非管理员尝试授权他的帐户时,他会收到错误"此操作只能由管理员执行"。当管理员完成此操作时,它会授权他们,当管理员通过管理员同意时,它仍然只是授权他们。普通用户仍然会收到该错误。
这些是我的应用要求的权限:
这是我们为其存储的数据:
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
答案 0 :(得分:0)
修正了它。它是Azure中的应用程序权限(与委派权限相对)。它具有“读写所有邮箱”,以及其他一些基本上授予访问组织中所有用户权限的邮箱。
删除它,用户授权有效,我甚至不需要管理员同意。