我有一個托管在 azure 上的應用服務。這是在加載的第一頁上運行的代碼。
protected void Page_Load(object sender, EventArgs e)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
var identity = HttpContext.Current.User.Identity.Name;
lblUserInfo.Text = $"Found User -- > {identity}";
return;
}
else
{
lblUserInfo.Text = "Name Unknown!";
}
}
當我在本地運行它時,它在該標簽中正確顯示“名稱未知”。在 Azure 上,應用服務上的身份驗證刀片表明,如果沒有登錄,就無法訪??問該服務。換句話說,組織中的人員可以訪問該應用程式。
我對MSDN 檔案的理解是 HttpContext.Current.User 可用于在代碼中獲取用戶名。當我在 azure 上托管時,這不起作用,因為代碼中的標識變數是空白的。網站標簽"Found User --> "在 Azure 上運行時顯示。
為了在代碼中獲取用戶名,我還需要做什么?
uj5u.com熱心網友回復:
如何從 Azure 上托管的應用服務獲取登錄用戶名?
要獲取 Azure Web App 中的當前用戶,請使用
var UserName = ((System.Security.Claims.ClaimsIdentity)User.Identity).Claims.Where(c => c.Type == "name").FirstOrDefault().Value;
如果要從 Azure Web App 接收用戶登錄資料,可以嘗試使用 Azure Web App 的基本身份驗證。請參閱Azure 應用服務中的身份驗證和授權。
我們需要使用 OpenID Connect 對來自 Azure AD 租戶的用戶進行身份驗證。請參閱使用 OpenID Connect 將 Azure AD 集成到 Web 應用程式中
或者
應用服務使用特定標頭將用戶宣告傳達給您的應用程式。這些標頭不能由外部請求設定,因此它們僅在應用服務設定時才存在。
用戶的宣告可以通過將它們注入到請求標頭中來獲得。不允許外部請求設定這些標頭,它們僅在應用服務設定時才存在。
用作 http resquest
X-MS-CLIENT-PRINCIPAL-NAME標頭以獲取用戶名。參考##在應用程式代碼中訪問用戶宣告
var UserName=httpRequest.Headers["X-MS-CLIENT-PRINCIPAL-NAME"].ToString();
- 這僅適用于 Azure Web App
- ClaimsPrincipal 實體可用于檢索經過身份驗證的用戶資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/487062.html
