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

无法使用微软图形 API 获取另一个租户的组信息

寇甫
2023-03-14

我在Azure AD门户中创建了两个目录。在一个目录中,我注册了客户端应用程序并授予委派权限

    < li >用户。阅读 < li >目录。AccessAsUser.All < li >目录。Read.All

我还使任何 Azure AD 目录都使用此应用程序的多租户。

成功登录后,我调用API(https://graph.microsoft.com/v1.0/me/memberOf)以获得用户的组信息。这仅适用于注册应用程序的目录中的用户。我确实在应用程序注册的目录中获得了用户的所有详细信息,如displayName等。

当我通过属于另一个租户(目录)的用户登录时,登录成功,但我没有在API响应中获得完整的组数据(包括在下面)。我得到了正确的对象id(组的),但没有得到其他细节。

这似乎是与许可有关的问题,我无法弄清楚。请任何人提出建议。

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#directoryObjects",
    "value": [
        {
            "@odata.type": "#microsoft.graph.group",
            "id": "8bcd8779-8a74-4db7-83f0-8a5c5d076540",
            "deletedDateTime": null,
            "classification": null,
            "createdDateTime": null,
            "creationOptions": [],
            "description": null,
            "displayName": null,
            "groupTypes": [],
            "isAssignableToRole": null,
            "mail": null,
            "mailEnabled": null,
            "mailNickname": null,
            "onPremisesDomainName": null,
            "onPremisesLastSyncDateTime": null,
            "onPremisesNetBiosName": null,
            "onPremisesSamAccountName": null,
            "onPremisesSecurityIdentifier": null,
            "onPremisesSyncEnabled": null,
            "preferredDataLocation": null,
            "proxyAddresses": [],
            "renewedDateTime": null,
            "resourceBehaviorOptions": [],
            "resourceProvisioningOptions": [],
            "securityEnabled": null,
            "securityIdentifier": null,
            "visibility": null,
            "onPremisesProvisioningErrors": []
        }
    ]
}

我使用带有这些配置属性(id,secret-masked)的Spring Securityoauth2实现

azure:
  activedirectory:
    tenant-id: 66aeb78f-7a26-46c9-99ab-460c6309b21e
    active-directory-groups: Users
  client:
    client-id: 9618ac61-43ab-4c97-a9f1-769c91f48e08
    client-secret: DxndD0cBezR-AnrGuCH@?b1NpwtFj?47
    accessTokenUri: https://login.microsoftonline.com/common/oauth2/v2.0/token
    userAuthorizationUri: https://login.microsoftonline.com/common/oauth2/v2.0/authorize?prompt=select_account
    scope: user.read
  resource:
    userInfoUri: https://graph.microsoft.com/v1.0/me

共有2个答案

戈嘉慕
2023-03-14

从菲利普的回答中,我找到了在第二个租户中授予许可的地点和方式。这些链接帮助我理解了应用程序注册和企业应用程序之间的区别。

Azure应用注册与企业应用

Azure中“企业应用”和“应用注册”的区别

楚德辉
2023-03-14

当填充的唯一属性是对象ID时,您很可能处于为不可访问的成员对象返回有限信息中描述的场景中。

简而言之,虽然你的应用确实有权读取登录用户是组成员的事实(感谢 User.Read),但它无权读取该组的所有属性。

由于Direcory. read. All足以读取所有组属性,因此可能的结论是,在第二个租户中,您的应用实际上并未被授予您列出的所有三个权限,而只被授予了User. read。

注意:始终为您的方案选择特权最低的权限。目录.AccessAsUser。一切都应该尽可能避免,因为这是最有特权的许可。对于所描述的场景,您甚至可能不需要Directory.Read.All。如果您只需要访问基本组详细信息(例如显示名称等),请尝试GroupMember.Read。全部取而代之。

 类似资料:
  • 我在Azure门户网站的应用程序注册服务中创建了一个应用程序,以访问Microsoft 365图形api。 我可以使用https://log in . Microsoft online . com/570 fa6c * * * * * * * * * * * * * * * * * * * * * f233/oauth 2/v 2.0/token创建令牌,但是当我尝试使用上面生成的令牌https:

  • 我使用界面获取用户列表 https://graph.microsoft.com/v1.0/users?$select=id,displayName,assignedLicenses 我想获得未分配许可证的用户列表 “受让人许可证”:[]

  • 我们正在整合微软Azure广告与我们的应用程序。我正在尝试使用微软图形API(https://graph.microsoft.com/v1.0/users/{id | userPrincipalName }/photo/$ value)获取用户个人资料图片。但这对我不起作用。我已经在应用程序中给出了该API所需的所有权限,但每次都得不到响应。你能告诉我我错过了什么配置吗? 答复: 谢谢

  • 1-我们创建了一个webpart来使用app services/graph api(/users/username{passwordprofile:{“password”:“xxxx”})更改用户的密码 2-因为Directory.AccessasUser.All是一个委托的权限,我们需要将用户添加到正确的角色中,才能获得更改密码的权限。

  • 本文向大家介绍SpringBoot中获取微信用户信息的方法,包括了SpringBoot中获取微信用户信息的方法的使用技巧和注意事项,需要的朋友参考一下 前言 不知道你是否参加过拼多多上邀请微信好友砍价功能,这个功能实现首先需要考虑的就是获取微信用户的信息。获取用户信息就是获取公众号下微信用户的信息,今天我就来讲讲如何从公众号下获取微信用户信息。 需要声明一点的是获取微信公众号下的用户信息的权限是服