我在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."
}
}
任何人都可以告诉我,为了更新来宾用户的密码,我必须使用哪些其他参数。请帮忙。谢谢
应用程序权限的屏幕截图:
jwt.ms的屏幕截图
首先,您不能使用
name@tenantname.info
作为请求参数,您应该使用Object ID
作为请求参数(对于来宾用户,需要对象id。普通成员用户可以使用帐户名)经过测试,我发现使用正确的请求参数修改来宾用户的密码,虽然会有正确的响应,但事实上,来宾用户的密码仍然没有被修改。因此,总之,您不能更改来宾用户的密码。因为您的AAD实际上没有为此用户分配密码
类似的帖子here供您参考
相关问题 更多 >
编程相关推荐