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 –