2017-04-19 50 views
2

我正在嘗試編寫一個腳本來使用Graph API將用戶分配給Azure AD應用程序(servicePrincipal)。我正在測試這個在我的沙箱中,我已經定義了應用程序併爲其分配了用戶。但是,當我查詢servicePrincipal時,我在響應中的任何地方都看不到用戶。使用圖形API以編程方式將用戶分配給Azure AD應用程序

問題:基於documentation

  1. ,不應該有appRoleAssignment

  2. 該文檔說這個字段是隻讀的,那麼您應如何分配用戶?

    https://graph.windows.net/tenant-id/users/user-id/appRoleAssignments?api-version=1.6 
    

    https://graph.windows.net/tenant-id/users/user-id/appRoleAssignments?api-version=1.6 
    

    您可以通過一個HTTP POST來創建任務:

回答

3

您可以查詢圖形API時,通過導航屬性獲取用戶的appRoleAssignments您需要發送的對象如下所示:

{ 
    "id": "id-of-role", 
    "principalId": "objectId-of-user", 
    "resourceId": "objectId-of-service-principal" 
} 

如果您的應用程序沒有任何作用,但仍希望將用戶分配,似乎你可以將ID設置爲全零:

當資源不聲明任何權限,一必須指定默認ID(零GUID)。

因此,像:

{ 
    "id":"00000000-0000-0000-0000-000000000000", 
    "resourceId": "a27d8321-3dc6-44a1-bf19-2546a9f2806e", 
    "principalId": "c4f810b8-2ea1-4580-9595-30275a28c2a2" 
} 
+0

非常感謝你。我試圖看看是否可以使用更新的MSFT Graph API複製:https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/directoryobject,但這很好。 – babakh

+1

我正在努力與此。如果我從租戶獲取應用程序的對象ID或應用程序ID,我總是得到錯誤資源不存在 – Sentinel

+0

它是您需要的服務主體的對象ID,而不是應用程序。您可以在Azure門戶的Azure AD刀片中的企業應用程序下找到服務主體。在它的屬性中你會找到對象ID。 – juunas

相關問題