2014-05-20 74 views
1

我創建了一個ASP.NET Web窗體應用,並將身份驗證機制設置爲「組織帳戶」,並選擇了「雲 - 多個組織」選項。識別用戶在ASP.NET中的租戶

運行默認站點後,我「註冊」了兩個完全不相關的Windows Azure AD帳戶。

我可以在默認的「Tenants」表中看到兩個條目。

到目前爲止。太好了。

但是,我無法弄清楚如何識別哪個租戶是我登錄的用戶中的任何一個映射到的。

如何映射: Context.User.Identity.Name

要個別租戶ID,這樣我可以隔離數據?

回答

3

您剛剛獲得TenantId(http://schemas.microsoft.com/identity/claims/tenantid)或IdentityProvider聲明(http://schemas.microsoft.com/identity/claims/identityprovider)。這些是唯一標識用戶租戶的聲明。 並且從頭開始看從未如此簡單(從.NET 4.0開始)。下面是一個簡單的MVC Razor視圖示例:

@foreach (var claim in ((System.Security.Claims.ClaimsIdentity)User.Identity).Claims) 
{ 
    <p><b>@claim.Type:</b> @claim.Value</p> 
} 

爲了緩解這種情況,您可以創建一個擴展方法:

public static class ClaimsIdentityExtensions 
{ 
    public static string GetTenantId(this ClaimsIdentity identity) 
    { 
     var claim = identity.Claims.FirstOrDefault(c => c.Type.Equals("http://schemas.microsoft.com/identity/claims/identityprovider")); 
     return (claim != null) ? claim.Value : "unknown"; 
    } 
}