在ASP.NET中标识用户所属的租户

时间:2014-05-20 20:37:25

标签: c# asp.net azure

我创建了一个ASP.NET Web表单应用程序,其身份验证机制设置为"组织帐户"与云计算 - 多个组织"选择了选项。

然后运行默认网站"注册"两个完全不相关的Windows Azure AD帐户。

我可以在默认情况下看到两个条目"租户"表

到目前为止。太好了。

但是,我无法确定如何识别我签名的用户中的哪个租户映射到。

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

对于单个租户ID,以便我可以隔离数据?

1 个答案:

答案 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";
    }
}