gpt4 book ai didi

azure - 将受邀 guest 用户添加到 Azure AD 中的组

转载 作者:行者123 更新时间:2023-12-02 23:27:48 25 4
gpt4 key购买 nike

我正在尝试向新用户发送 Azure AD invite然后将它们添加到 specific security group使用 Microsoft Graph API。

邀请发送完美,在响应正文中,我获得了新用户的 ID。但是,当我尝试将该用户添加到安全组时,我收到以下 403 错误消息:

Insufficient privileges to complete the operation

我应该为该应用授予正确的 API 权限,因为我已从 Azure 门户设置了 Group.ReadWrite.All。

根据this ,我应该能够毫无问题地将受邀请的用户添加到组中,但我担心 guest 用户可能会被视为“个人 Microsoft 帐户”,并且不支持从 Graph API 将其添加到组中:

personal account permission

这是我的要求:

POST /v1.0/groups/dXXXXXXX-cXXX-4XXX-9XXX-7XXXXXXXXXXX/members/$ref HTTP/1.1
Authorization: Bearer {my token}
Content-Length: 102
Host: graph.microsoft.com
Content-Type: application/json

{"@odata.id":"https://graph.microsoft.com/v1.0/directoryObjects/9XXXXXXX-9XXX-4XXX-9XXX-9XXXXXXXXXXX"}

如何将新邀请的访客添加到群组中?

更新:

当使用 API 将租户中的用户放入组时,我遇到了同样的权限不足错误,因此看起来问题并非特定于 guest 用户。

更新2:

根据要求,以下是完整的 token 请求:

POST /{tenant}/oauth2/v2.0/token HTTP/1.1
Content-Length: 979
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&client_id={clientID}&scope=user.read%20email%20openid%20profile%20offline_access&code={code}&redirect_uri={mywebsite}&client_secret={secret}

更新3:

我的权限截图:

Azure AD app permissions

以及我解码的 access_token 的范围:

"scp": "Directory.AccessAsUser.All Directory.ReadWrite.All email Group.Read.All 
Group.ReadWrite.All openid profile User.Invite.All User.Read User.ReadWrite
User.ReadWrite.All"

最佳答案

根据我的理解,首先您需要邀请您的 guest 用户,如下所示:

请求网址: https://graph.microsoft.com/v1.0/invitations

方法类型: POST

正文格式:

{
"invitedUserEmailAddress": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ff9a879e928f939abf9e91869b90929e9691d19c9092" rel="noreferrer noopener nofollow">[email protected]</a>",
"inviteRedirectUrl": "https://myapp.com",
"userType":"member"
}

所需权限:专用User.Invite.All

postman 示例:

enter image description here

Once you have successfully add it. after that you have to add that user in a group like below:

将访客用户添加到组:

请求网址: https://graph.microsoft.com/v1.0/groups/b4699e9c_GroupId_cee27b53/members/$ref

方法类型: POST

正文格式:

{
"@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/Guest_User_Id"
}

所需权限:专用Directory.ReadWrite.All

postman 示例:

enter image description here

注意:请您添加 User.Invite.AllDirectory.ReadWrite.All 权限,然后重试。我已成功完成所有步骤并获得成功。

要记住的一点:

一旦您拥有了Directory.ReadWrite.All,您就无需单独添加Group.ReadWrite.All

更新

确保您在添加权限后点击了授予管理员同意按钮请参阅下面的屏幕截图:

enter image description here

更新:2 根据授权代码流程

由于您正在使用授权码授予。您需要在azure门户上添加专用权限。然后尝试获取授权码,如下所示

获取授权码:

https://login.microsoftonline.com/YourTenant.onmicrosoft.com/oauth2/v2.0/authorize?client_id={ClientId}&response_type=code&redirect_uri={redirectURI}&response_mode=query&scope=https://graph.microsoft.com/.default

请求 token oauth2/V2.0/token:

请求 URL: https://login.microsoftonline.com/common/oauth2/V2.0/tokenhttps://login.microsoftonline .com/YourTenant.onmicrosoft.com/oauth2/V2.0/token

方法: POST

请求正文格式

client_id:Your_Clinet_Id
scope:https://graph.microsoft.com/.default
redirect_uri:Your_Portal_Redirect_URI
grant_type:authorization_code
client_secret:Your_Client_Secret
code: Paste Code Here

解码 token :

您可以在 https://jwt.io/ 上解码您的 token

您的许可应如下所示:

enter image description here

关于azure - 将受邀 guest 用户添加到 Azure AD 中的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57297014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com