[英]Get current logged user with AAD authentication provider
您可以使用ClaimsPrincipal
來獲取身份。
來自Azure指南
Claim displayName = ClaimsPrincipal.Current.FindFirst(ClaimsPrincipal.Current.Identities.First().NameClaimType);
ViewBag.DisplayName = displayName != null ? displayName.Value : string.Empty;
在您所說的簡單網站中; 確保您的控制器繼承自Controller。
[Authorize]
public class MyController : Controller
然后簡單地使用
protected string userName => User?.Identity?.Name ?? "Unnamed User";
然后使用use userName。 它將返回AD用戶的登錄名/電子郵件名
您正在使用Azure App Service中的身份驗證和授權 。
App Service通過使用特殊標頭將用戶聲明傳遞給您的應用程序。 不允許外部請求設置這些標頭,因此僅在由App Service設置時才存在。 標頭示例包括:
- X-MS-CLIENT主體名稱
- X-MS-CLIENT-委托ID
- X-MS-TOKEN-AAD-ID-TOKEN
- X-MS-TOKEN-AAD-ACCESS-TOKEN
參考: https : //docs.microsoft.com/zh-cn/azure/app-service/app-service-authentication-how-to#access-user-claims
用任何語言或框架編寫的代碼都可以從這些標頭中獲取所需的信息。 對於ASP.NET 4.6應用程序,ClaimsPrincipal將自動設置為適當的值。
您的應用程序還可以通過調用/.auth/me獲得有關已認證用戶的其他詳細信息。
但是目前看來,ASP.NET Core不支持將身份信息從IIS模塊(例如Easy Auth)流向應用程序代碼。 請參閱此處的討論 。
我目前還沒有測試。 但是,您始終可以從標題上方獲取用戶名和令牌信息。 如果要獲取更多用戶的聲明,可以向內置端點/.auth/me
發出服務器端請求以檢索聲明。
您可以編寫自定義中間件來填充.net Core中的User屬性:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.