如何使用graph API更新azure ad中来宾用户的密码。?python

2024-04-25 19:49:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我在azure active directory中添加了一些来宾用户和成员。成员是我为其创建的用户名为exname@tenantname.info的成员。来宾用户就像来自谷歌的用户一样,所以我把他们添加为name@google.com

现在我有了更新成员密码的代码。代码如下:

# Getting token
r = requests.post("https://login.microsoftonline.com/" + config_data['TENANT'] + "/oauth2/token",
      data={"grant_type": "client_credentials",
            "client_secret": config_data['CLIENT_SECRET'],
            "client_id": config_data['CLIENT_ID'],
            "resource": config_data['RESOURCE']})
            
ret_body = r.json()
token = ret_body['access_token']

headers = {'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json'}

user_data = {
    "accountEnabled": True,
    "userPrincipalName": "name@tenantname.info",
    "passwordProfile": {
        "forceChangePasswordNextSignIn": False,
        "password": "<password>"
    }
}

jdata = json.dumps(user_data)

conn = http.client.HTTPSConnection('graph.microsoft.com')
conn.request("PATCH", "/v1.0/users/name@tenantname.info", jdata, headers)
response = conn.getresponse()
data = response.read()

上面的代码工作得非常好,我可以更新成员的密码,但如果我想更新来宾用户的密码,它会给出以下错误:

{
    "error": {
        "code": "Request_ResourceNotFound",
        "innerError": {
            "date": "2020-07-22T04:25:18",
            "request-id": "a6edf8e1-2256-4076-acc8-440607fa6119"
        },
        "message": "Resource 'name@google.com' does not exist or one of its queried reference-property objects are not present."
    }
}

任何人都可以告诉我,为了更新来宾用户的密码,我必须使用哪些其他参数。请帮忙。谢谢

应用程序权限的屏幕截图:

enter image description here

enter image description here

enter image description here

jwt.ms的屏幕截图

enter image description here


Tags: 代码用户nameinfocomclienttokenconfig
1条回答
网友
1楼 · 发布于 2024-04-25 19:49:20

首先,您不能使用name@tenantname.info作为请求参数,您应该使用Object ID作为请求参数(对于来宾用户,需要对象id。普通成员用户可以使用帐户名)

 PATCH  /v1.0/users/<your guest user Object id>

经过测试,我发现使用正确的请求参数修改来宾用户的密码,虽然会有正确的响应,但事实上,来宾用户的密码仍然没有被修改。因此,总之,您不能更改来宾用户的密码。因为您的AAD实际上没有为此用户分配密码

类似的帖子here供您参考

相关问题 更多 >