有什么方法可以知道用户是否代表组织表示同意

Awe*_*hon -1 oauth-2.0 microsoft-graph-api microsoft-oauth

组织管理员可以选择“代表您的组织同意”。

此功能使他们能够获得组织内所有用户的同意。因此,组织的用户无需提供个人同意即可注册。在 Microsoft 文档中,这称为管理员同意

是否可以使用以下任何来源检查是否获得了组织范围的同意:

  1. OAuth 响应JWT 令牌
  2. 微软图形API

use*_*152 5

您可以列出oAuth2PermissionGrant实体,它们表示授予的委派权限,以使客户端应用程序能够代表用户访问 API。

oAuth2PermissionGrant具有指示consentType是否授予客户端应用程序模拟所有用户(租户范围)或仅模拟特定用户的授权的属性。

该属性的可能值为consentType

  • AllPrincipals- 租户范围内的同意
  • Principal- 特定用户的同意

您可以通过以下方式过滤权限授予consentType

https://graph.microsoft.com/v1.0/oauth2PermissionGrants?$filter=consentType eq 'AllPrincipals'
Run Code Online (Sandbox Code Playgroud)

响应看起来像这样

{
    "value": [
        {
            "clientId": "f5913df3-bd00-4259-aa45-a17a008b033c",
            "consentType": "AllPrincipals",
            "id": "xxx",
            "principalId": null,
            "resourceId": "0741d31a-647d-4821-b3d6-99aeea5e0123",
            "scope": "User.Read User.ReadBasic.All"
        },
        {
            "clientId": "f5913df3-bd00-4259-aa45-a17a008b033c",
            "consentType": "AllPrincipals",
            "id": "xxx",
            "principalId": null,
            "resourceId": "3c4020a9-f9ce-4790-ba8f-4f85b0ff62d5",
            "scope": "Files.Read.All"
        },
        ...
    ]
}
Run Code Online (Sandbox Code Playgroud)

clientId如果在一段时间内授予了某些权限集,它可以返回特定的更多记录。

要查找有关客户端应用程序的详细信息,请clientId在请求中使用

https://graph.microsoft.com/v1.0/servicePrincipals/{clientId}
Run Code Online (Sandbox Code Playgroud)