Вы можете использовать IClaimsTransformation
, чтобы связать текущего пользователя с аутентификацией windows с локальным пользователем базы данных, проверить, существует ли пользователь / роли / разрешения пользователя, а также можно добавить пользовательские утверждения пользователя (например, роли) в ClaimsPrincipal, чтобы Вы можете напрямую эти свойства позже от User.Claims
:
public class ClaimsTransformer : IClaimsTransformation
{
public Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
{
var id = ((ClaimsIdentity)principal.Identity);
var ci = new ClaimsIdentity(id.Claims, id.AuthenticationType, id.NameClaimType, id.RoleClaimType);
//read database and create/check a user in local database , add custom claims in Principal
if (....)
{
ci.AddClaim(new Claim("localUserID", "XXX"));
}
else
{
ci.AddClaim(new Claim("localUserID", "XXXX"));
}
var cp = new ClaimsPrincipal(ci);
return Task.FromResult(cp);
}
}
services.AddTransient<IClaimsTransformation, ClaimsTransformer>();