当前位置: 首页 > 知识库问答 >
问题:

如何为Office365 API实现管理员同意和用户同意

訾稳
2023-03-14

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

但我也希望用户也同意,这样他就可以进入他的帐户并在管理员同意后单击“授权”。

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

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

    < li >日历。阅读 < li >日历。读写 < li >联系人。读写 < li >邮件。读写 < li >邮件。发送 < li >任务。读写

这是我们为它存储的数据

user_id
access_token
expires_on
resource
refresh_token
scope
id_token

我只基本熟悉oauth 2.0,这也没什么帮助。

几个星期以来,我一直在浏览文章、论坛问题、帮助指南和文档。救命啊。

更新:所以我想也许我需要在我的数据中添加一个is_admin标志?因此,当管理员同意时,我将上述所有字段与 is_admin = 一起保存

我暖和了吗?

登录网址:

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个答案

韩博厚
2023-03-14

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

去掉这个,用户授权就可以了,我甚至不需要管理员的同意。

 类似资料:
  • 我们遵循Microsoft Code授权流的OAuth2的v2,如下所述, https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow 在Microsoft Azure下的应用程序注册中创建应用程序后,尝试从以下url获取代码 https://log in . Microsoft

  • 我们正在开发一个Office外接程序,该外接程序使用Azure AD的组织帐户进行身份验证。外接程序需要管理同意。因此,如果管理员已登录,应引导他表达其管理同意。 我们使用OAuth进行身份验证: 我们通过附加

  • 我正在尝试使用 Postman 进行身份验证以获取 Azure AD 持有者令牌,然后将令牌发送到我的本地 WebApi .net Core 服务器,该服务器应验证令牌并将请求发送到图形 API。但是在过去的几个小时里,我被这个错误困住了。 Microsoft.Identity.Client.MsalUiRequiredException: AADSTS65001:用户或管理员不同意使用ID 为“

  • 我正在尝试将DocuSign集成到我们的系统中。我从文档中了解到,我们需要使用JWT身份验证,因为我们请求组织管理员的许可,然后,用户在请求签名时不需要登录。 这是我用来获得管理员同意的url: https://account-d.docusign.com/oauth/auth?response_type=code 回调URL被成功调用,返回的代码如下: ?state=esignature\u d

  • “AADSTS65001:用户或管理员未同意使用ID为<'My native client app ID'>的应用程序。请为此用户和资源发送交互式授权请求。 我们使用,是本机应用程序id,是Web API应用程序URI。 权限方面,已从客户端应用程序授予了访问api应用程序的委托权限,并尝试在清单中设置。

  • 我正在玩微软图形API通过图形资源管理器。我用我的公司帐户登录了。根据文档,委派的权限sites.read.all和sites.readwrite.all不需要管理员同意。 但在Graph explorer中,我看到权限sites.read.all未被同意。 如果我点击同意按钮的Site.Read.All权限,我将收到需要管理员批准的信息。 这是否意味着我真的需要管理员同意的Sites.Read.