Power Apps 裡的 UPN、Email 與 Entra Object ID 到底是什麼?

| PowerPlatform | 2 Reads

在 Power Apps 裡取得目前登入者資訊時,經常會看到:

User().Email

乍看之下它就是 Email,但實際上這裡很容易混淆 UPN、Email、Microsoft Entra ID 與 Object ID

Microsoft Entra ID 是什麼?

Microsoft Entra ID 並不是某個 Email 地址,而是 Microsoft 的身分與帳號管理系統

可以簡單理解成:

Microsoft Entra ID
└─ User
   ├─ Display Name
   ├─ UPN
   ├─ Email
   └─ Object ID

例如某個使用者可能有:

UPN       : [email protected]
Email     : [email protected]
Object ID : 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx

UPN 不等於 Email

UPN(User Principal Name)本質上是登入 ID。

例如:

UPN:
[email protected]

你可以使用它登入 Microsoft 365、Power Apps、Power BI 等服務。

而 Email 則是:

Email:
[email protected]

用來收發郵件。

兩者用途不同:

UPN
→ Authentication / 登入身分

Email
→ Messaging / 郵件地址

只是企業通常會故意把兩者設定成完全相同,因此日常使用時很容易產生:

UPN 不就是 Email 嗎?

的感覺。


UPN 和 Email 也可以不同

例如:

UPN:
[email protected]

Email:
[email protected]

這種情況下:

登入 Microsoft 365
→ [email protected]

收發郵件
→ [email protected]

不過公司將自己的網域加入 Microsoft 365 後,更常見的是:

UPN   = [email protected]
Email = [email protected]

兩邊都使用公司的正式網域完全沒有問題。


Power Apps 的 User().Email 有點容易誤導

Power Apps 中:

User().Email

雖然屬性名稱叫 Email,但它取得的是目前登入使用者的 UPN

因此更準確的理解是:

User().Email
≈ Current User UPN

不要單純因為它叫 Email,就認為一定取得的是郵箱的 SMTP 地址。


Power Apps 可以直接取得哪些使用者資訊?

目前可以直接透過 User() 取得:

User().FullName
User().Email
User().EntraObjectId
User().Image

分別代表:

Power Fx 含義
User().FullName 使用者顯示名稱
User().Email 使用者 UPN
User().EntraObjectId Entra Object ID
User().Image 使用者頭像

如果還需要 Department、Job Title、Manager、Mail 等更詳細的組織資訊,則通常需要使用 Office 365 Users 等 Connector。


UPN 是唯一的嗎?

在同一個 Entra Tenant 中,UPN 必須能唯一識別使用者。

所以:

[email protected]

不能同時作為兩個 Entra User 的 UPN。

因此拿 UPN 查詢使用者通常沒有問題。

但是有一個缺點:

UPN 可以被修改。

例如:

修改前:
[email protected]

修改後:
[email protected]

仍然可能是同一個 Entra User。


長期識別使用者,更推薦 Object ID

如果是在 Power Apps + Dataverse 中保存「這筆資料屬於哪個使用者」,相比:

User().Email

更適合作為穩定識別值的是:

User().EntraObjectId

Object ID 類似:

a90c6800-e58c-4495-81f7-55819b56fe2a

即使之後:

  • 姓名改了

  • Email 改了

  • UPN 改了

只要仍然是同一個 Entra User 物件,其 Object ID 通常不會因此改變。


最後用一句話記住

Microsoft Entra ID
= 身分管理系統

UPN
= 登入帳號

Email
= 郵件地址

Entra Object ID
= 使用者物件的唯一 ID

而在 Power Apps 裡:

User().Email
→ UPN

User().EntraObjectId
→ Entra Object ID

UPN 和 Email 經常長得一模一樣,但它們只是「值通常相同」,並不是同一個概念。

This article was last edited at