465 字
2 分鐘
為 Entra ID 應用程式自定義 Directory Extensions
前文介紹了 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 欄位,代表這位使用者在這個應用程式的使用者類型。
POST https://graph.microsoft.com/v1.0/applications/<objectid>/extensionPropertiesContent-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 即可。
PATCH https://graph.microsoft.com/v1.0/meContent-type: application/json
{ "extension_<appid>_userType": "123"}
參考資料:
查看自己帳號的 Directory Extensions
用 GET 就可以看到設定到使用者的 Directory Extensions
GET https://graph.microsoft.com/v1.0/me?$select=extension_<appid>_userType
參考資料:
設定其他帳號的 Directory Extensions
如果要設定其他使用者也可以,參考官方 API 如何使用,範例如下。在 Graph API 操作要另外授權 User.ReadWrite.All,才能編輯其他使用者欄位。
Content-type: application/json
{ "extension_<appid>_userType": "123"}