使用Graph API更改Azure AD B2C用户密码

时间:2017-08-08 20:37:52

标签: oauth-2.0 azure-active-directory azure-ad-b2c azure-ad-graph-api

我尝试使用Sample Graph API应用更改用户密码但我得到了:

错误调用Graph API响应:

{
  "odata.error": {
    "code": "Authorization_RequestDenied",
    "message": {
      "lang": "en",
      "value": "Insufficient privileges to complete the operation."
    }
  }
}

图表API请求:

PATCH /mytenant.onmicrosoft.com/users/some-guid?api-version=1.6 HTTP/1.1
client-request-id: ffd564d3-d716-480f-a66c-07b02b0e32ab
date-time-utc: 2017.08.10 03:04 PM

JSON文件

{
    "passwordProfile": {
        "password": "Somepassword1$",
        "forceChangePasswordNextLogin": false
    }
}

我已经测试过更新用户的displayName并且运行正常。

{
    "displayName": "Joe Consumer"
}

AD应用权限

我已配置my app permissions as described here.

AD App Permissions

2 个答案:

答案 0 :(得分:10)

结帐this article。好像它有相同的症状。

解决方案1:

如果在调用仅包含读取权限的API时收到此错误,则必须在Azure管理门户中设置权限。

  • 转到Azure管理门户并单击“Active Directory”。
  • 选择自定义AD目录。
  • 单击“应用程序”并选择“应用程序”。
  • 单击“配置”并向下滚动到“对其他应用程序的权限”部分。
  • 为Windows Azure Active Directory提供所需的应用程序权限和委派权限。
  • 最后保存更改。

解决方案2:

如果您在调用包含deletereset password操作的API时收到此错误,那是因为这些操作需要Company Administrator的管理员角色。截至目前,您只能通过Azure AD Powershell module添加此角色。

  1. 使用Get-MsolServicePrincipal -AppPrincipalId查找服务主体

    Get-MsolServicePrincipal | ft DisplayName, AppPrincipalId -AutoSize
    
  2. 使用Add-MsolRoleMember将其添加到Company Administrator角色

    $clientIdApp = 'your-app-id'
    $webApp = Get-MsolServicePrincipal –AppPrincipalId $clientIdApp
    
    Add-MsolRoleMember -RoleName "Company Administrator" -RoleMemberType ServicePrincipal -RoleMemberObjectId $webApp.ObjectId
    
  3. 要通过PowerShell连接到您的B2C租户,您需要一个本地管理员帐户。 This blog post should help,请参阅“解决方案”部分。

    create global admin

    connect via powershell

    get-msolservice principal screenshot

    add role screenshot

答案 1 :(得分:0)

尝试以下设置,适合我。

enter image description here

使用以下JSON

 {
  "accountEnabled": true,
  "signInNames": [
    {
      "type": "emailAddress",
      "value": "kart.kala1@test.com"
    }
  ],
  "creationType": "LocalAccount",
  "displayName": "Joe Consumer",
  "mailNickname": "joec",
  "passwordProfile": {
    "password": "P@$$word!",
    "forceChangePasswordNextLogin": false
  },
  "passwordPolicies": "DisablePasswordExpiration",
  "givenName": "Joe",
}

另外,请务必为应用分配用户帐户,管理员角色,以便删除用户link here