Я создал приложение веб-формы ASP.NET с механизмом аутентификации, установленным на "Организационные учетные записи" с выбранным вариантом "Облачные - множественные организации".
Запустив сайт по умолчанию, я затем "зарегистрировал" две совершенно несвязанные учетные записи Windows Azure AD.
И я вижу две записи в таблице "Арендаторы" по умолчанию.
Так далеко. Так хорошо.
Однако я не могу понять, как определить, к какому арендатору относится любой из моих подписанных пользователей.
Как мне сопоставить: Context.User.Identity.Name
Для индивидуального идентификатора арендатора, чтобы я мог разделить данные?
Вы просто получаете 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";
}
}