我创建了一个ASP.NET Web表单应用程序,其身份验证机制设置为"组织帐户"与云计算 - 多个组织"选择了选项。
然后运行默认网站"注册"两个完全不相关的Windows Azure AD帐户。
我可以在默认情况下看到两个条目"租户"表
到目前为止。太好了。
但是,我无法确定如何识别我签名的用户中的哪个租户映射到。
我如何映射: Context.User.Identity.Name
对于单个租户ID,以便我可以隔离数据?
答案 0 :(得分:3)
您只需获取TenantId(http://schemas.microsoft.com/identity/claims/tenantid)或IdentityProvider声明(http://schemas.microsoft.com/identity/claims/identityprovider)。这些是唯一标识用户租户的声明。 看看声明从未如此简单(从.NET 4.0开始)。这是一个示例MVC剃刀视图示例:
@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";
}
}