Power Apps 裡的 UPN、Email 與 Entra Object ID 到底是什麼?
Copyright Notice: This article is an original work licensed under the CC 4.0 BY-NC-ND license.
If you wish to repost this article, please include the original source link and this copyright notice.
Source link: https://v2know.com/article/1357
在 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