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

如何测试是否已授予管理员同意

南宫才英
2023-03-14

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

我们使用OAuth进行身份验证:

https://login.microsoftonline.com/common/oauth2/authorize?response_type=id_token&client_id=<clientId>&redirect_uri=<redirectUri>

我们通过附加请求管理员同意

问题1.我们如何测试是否已成功授予管理员同意,因此我们只需要要求管理员同意(如果他以前没有同意)?

问题2.我们如何检查外接程序的更新版本现在是否可能需要更多权限,并通知用户和管理员这些新要求?


共有2个答案

岳英耀
2023-03-14

恕我直言,自定义实现将是您的用例的更好选择

步骤可能如下

>

  • 用户首次登录

    您的应用程序/加载项检查内部内存/db中的同意

    找不到同意,这会将用户重定向到 Azure AD 中的同意页

    在用户批准其管理员访问后,我们通常会从Azure AD返回响应中的状态,如下图所示,

    得到http://localhost/myapp/permissions?tenant=a8990e1f-ff32-408a-9f8e-78d3b9139b95

    该应用程序现在在数据库中存储管理员同意授予状态。

    如果以后应用程序/外接程序需要更多权限,只需刷新同意和用户的存储值,以便下次登录时注意确保他们同意新的同意。新的同意请求将向 AD 发送其他范围,这些范围将在同意页中向用户显示。

    如需了解更多步骤,请点击此处

  • 慕兴平
    2023-03-14

    是的,你可以这样做。您将需要调用此MS G想像endpoint,并检查oAuth2PermissionGrant对象中设置为AllPr的字段。

    使用Microsoft Graph,您可以确定是否授予了管理员许可。授予管理许可后,应用程序上会写入OAuth2.0权限授予。

    在每个权限授予中,都有一个字段指示授予的权限级别。对于管理员同意,您将查找AllPr

    1. 连接您的应用程序以调用Microsoft G想像。确保它正在请求调用所需endpoint所需的所有权限。这在委派(代表最终用户)或应用角色的情况下是不同的。

    应用角色:目录.读取.全部

    委托权限:Diretory.Read。所有Directory.ReadWrite。所有Directory.AccessAsUser。所有都是按最低特权到最高特权的顺序排列的。

    这将返回一个包含您要查找的详细信息的oAuth2PermissionGrant对象。

     类似资料:
    • 管理组采用逐级授权模式,上级包含下级所有权限(应用管理、通讯录管理、API接口等),权限逐级为:企业创建人>系统管理组>下级管理组 由于每个管理组权限不同,一个管理员只能授权管理一个管理组(系统管理组、二级管理组、三级管理组、四级管理组等) 授权/变更系统管理员 企业创建人可将成员添加为系统管理组管理员,则该管理员具有所有应用和服务号的管理权限,具体操作如下: 1)企业创建人登录企业管理平台:ht

    • 我已经添加了“user.readwrite.all”的图形权限和如下所示的其他权限,但我不能为添加的请求授予同意权限。甚至我的组织的azure支持团队成员也不能给我许可。为什么没有启用“授予Arcadis管理同意”按钮?为什么会显示“不授予arcadis?是否需要支付此API消耗或如何启用此特性?

    • 我希望这个应用程序能够访问Graph API上的mail.read作用域,仅供特定的用户组使用。 我设法让整个组织都能进入。(点击Azure门户>Azure Active Directory>应用注册>MyApp>设置>权限中的“授予权限”按钮)。如何将这些权利限制在特定的用户群体,而不必提示任何个人同意?

    • 问题内容: 我有一个使用方法实现自定义的库,该方法将在调用时触发事件。我想测试该行为的方法。 我的自定义控件: 和测试: 问题在于该方法永远不会被调用,因此无法实现。 问题是:在这种情况下,我们如何进行测试?也许我们需要以某种方式强制运行循环? 编辑1:请注意,由于我正在测试库,因此我的测试目标没有任何主机应用程序。当测试目标具有主机应用程序时,以上测试通过。 问题答案: Apple的UICont

    • 问题内容: 我正在做一个拼字游戏程序 在下面的示例中,我下面的代码使用SQLite作为简单数据库来存储我的单词。 但是,它告诉我无法重新创建数据库表。 如何检查是否已经存在一个名为的表,然后跳过尝试创建表的操作? 错误: 编码: 问题答案: 您要查找的查询是: 因此,代码应如下所示: SQLite 3.3+的一个方便的替代方法是使用更智能的查询来创建表: 从文档中: 试图在已经包含相同名称的表,索

    • 本文向大家介绍如何测试JavaScript cookie是否已过期?,包括了如何测试JavaScript cookie是否已过期?的使用技巧和注意事项,需要的朋友参考一下 要测试Cookie是否在JavaScript中过期,请添加以下条件并检查- 您还可以使用单行代码进行检查-