465 字
2 分鐘
為 Entra ID 應用程式自定義 Directory Extensions
2024-11-15
無標籤

前文介紹了 Entra ID Directory Extensions 與 Connect Sync 的原理,我也是從 AD 同步過程中理解了 Directory Extensions,這功能滿方便的,可以為不同 Entra 應用程式定義客製化欄位,本文將說明如何為應用程式定義 Directory Extensions。


新增「應用程式註冊」#

先建立一個測試的應用程式,我們將為這個應用程式定義 Directory Extensions。記錄他的應用程式識別碼、物件識別碼。


建立 Directory Extensions#

前往 Graph Explorer 並登入您的 Microsoft 帳戶,確保該帳戶具有足夠的權限 Application.ReadWrite.All。

建立 Directory Extensions 的欄位說明如下:

  • dataType:型別,包含 binary、bool、datetime、int、string 等
  • name:欄位名稱
  • isMultiValued:是否可以允許多個值,會變成陣列
  • targetObjects:應用的物件

以下為 Graph API 的範例,並 POST JSON 過去來建立 Directory Extensions。這裡新增一個 userType 欄位,代表這位使用者在這個應用程式的使用者類型。

Terminal window
POST https://graph.microsoft.com/v1.0/applications/<objectid>/extensionProperties
Content-type: application/json
{
"name": "userType",
"dataType": "String",
"isMultiValued": false,
"targetObjects": [
"User"
]
}

回傳如下,name 為完整的字串,裡面包含應用程式識別碼

{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications('<objectid>')/extensionProperties/$entity",
"id": "<extid>",
"deletedDateTime": null,
"appDisplayName": "測試網站",
"dataType": "String",
"isMultiValued": false,
"isSyncedFromOnPremises": false,
"name": "extension_<appid>_userType",
"targetObjects": [
"User"
]
}

參考資料:


設定自己帳號的 Directory Extensions#

接下來就要來測試為使用者設定 userType,以下範例以自己為例,只需要PATCH 出去 JSON 即可。

Terminal window
PATCH https://graph.microsoft.com/v1.0/me
Content-type: application/json
{
"extension_<appid>_userType": "123"
}

參考資料:


查看自己帳號的 Directory Extensions#

用 GET 就可以看到設定到使用者的 Directory Extensions

Terminal window
GET https://graph.microsoft.com/v1.0/me?$select=extension_<appid>_userType

參考資料:


設定其他帳號的 Directory Extensions#

如果要設定其他使用者也可以,參考官方 API 如何使用,範例如下。在 Graph API 操作要另外授權 User.ReadWrite.All,才能編輯其他使用者欄位。

Terminal window
PATCH https://graph.microsoft.com/v1.0/users/[email protected]
Content-type: application/json
{
"extension_<appid>_userType": "123"
}