我正在尝试使用Graph API来更改B2C租户上当前登录用户的用户。
请求被发布到:
https://graph.windows.net/me/changePassword?api-version=1.6
提供的JSON格式如下:
{"currentPassword":"[currentpassword]","newPassword":"[newpassword]"}
不幸的是我继续收到以下错误,我不知道为什么(或者我不知道为什么使用'me'别名会有问题)。我也尝试将租户名称包括在我发布请求的位置,但这没有区别。
找不到“me”段的资源。
我已设法通过重置密码来更改密码。然而,问题在于可以在不提供当前密码的情况下更改密码。理想情况下,我希望用户必须在更新密码的过程中输入此内容。事实证明,遗漏的“我”问题可能归结为缺少权限。
我尝试将“访问目录作为登录用户”权限添加为应用程序的委派权限。我到了这个页面:
请注意,我还必须将登录网址设置为http://localhost/testapp/,并将应用ID URI设置为https://patrickscorp.onmicrosoft.com/testapp,因为如果未设置这两个设置,则经典门户拒绝保存更改。
在“对其他应用程序的权限”下,我点击了“添加应用程序”,然后选择了“Windows Azure Active Directory”。然后我确保选择了“以用户登录的访问目录”。
但是保存只会导致出现以下错误:
点击“详细信息”无济于事 - 它只是说如果问题仍然存在,请联系 支撑
如果我必须沿着重置路线走,那么有没有办法获取用户提供的密码并验证它?
答案 0 :(得分:0)
调用Azure AD Graph需要路径中的tenantName,如下所示:
https://graph.windows.net/mytenant.onmicrosoft.com/me/changePassword?api-version=1.6
这与Microsoft Graph不同,后者不需要它,因为它从用户令牌中推断出来,并且被调用如下:
https://graph.microsoft.com/v1.0/me/changePassword
但请务必注意,目前Azure AD B2C建议使用Azure AD Graph。
修改强>: 根据{{3}}:
为登录用户调用changePassword操作以更改自己的密码。
注意:此操作只能在登录用户上调用。
如果您想更改其他用户的密码,则需要使用Azure AD Graph Reference for Change Password:
https://graph.windows.net/mytenant.onmicrosoft.com/users/{user_id}?api-version=1.6