5

我试图使用Sample Graph API应用更改用户的密码,但我发现:变化Azure的AD B2C用户密码与图形API

错误调用图形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 

JSO N文件

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

我测试过更新用户的displayName和工作正常。

{ 
    "displayName": "Joe Consumer" 
} 

AD应用程序的权限

我已经配置my app permissions as described here.

AD App Permissions

+1

你能请张贴相关ID +时间戳从这个错误? –

+0

其中是相关ID? https://stackoverflow.com/questions/45593823/wheres-the-correlation-id-in-the-graph-api-response – spottedmahn

+0

我已经添加了它。谢谢你的帮助! @DanielDobalian – spottedmahn

回答

2

退房this article。似乎它有相同的症状。

解决方案1:

如果你是,当你调用包括只读权限,则必须在Azure管理门户设置权限的API收到此错误。

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

解决方案2:

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

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

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

    $clientIdApp = 'your-app-id' 
    $webApp = Get-MsolServicePrincipal –AppPrincipalId $clientIdApp 
    
    Add-MsolRoleMember -RoleName "Company Administrator" -RoleMemberType ServicePrincipal -RoleMemberObjectId $webApp.ObjectId 
    

要连接到您的B2C租户通过PowerShell你将需要一个本地管理员帐户。 This blog post should help与此,请参阅“解决方案”部分。

create global admin

connect via powershell

get-msolservice principal screenshot

add role screenshot

+0

感谢@Parakh!我认为解决方案1是针对旧门户的。请确认。我没有在portal.azure.com上看到这些选项 – spottedmahn

+0

nvm,我已经证实,这是针对旧门户的。我已经授予“读写目录数据”,如下所述:https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet#配置创建读取和更新权限为您的应用程序 – spottedmahn

+0

解决方案2是修复程序。 – spottedmahn

0

尝试下面的设置,我的作品。

enter image description here

使用以下JSON

{ 
    "accountEnabled": true, 
    "signInNames": [ 
    { 
     "type": "emailAddress", 
     "value": "[email protected]" 
    } 
    ], 
    "creationType": "LocalAccount", 
    "displayName": "Joe Consumer", 
    "mailNickname": "joec", 
    "passwordProfile": { 
    "password": "[email protected]$$word!", 
    "forceChangePasswordNextLogin": false 
    }, 
    "passwordPolicies": "DisablePasswordExpiration", 
    "givenName": "Joe", 
} 

还要确保您指定的应用程序的用户帐户,管理员角色,这将使它能够删除用户link here

+0

你确定你可以更改密码w /这些设置?你是否尝试使用上面的json更新用户? – spottedmahn

+0

检查答案中的json –