Как использовать AD для аутентификации и использовать SQL базу данных для авторизации на. NET Базовое веб-приложение для интрасети - PullRequest
0 голосов
/ 11 января 2020

У меня есть веб-приложение MVC .NetCore 3.0, использующее аутентификацию Windows. Я хочу добавить роли / разрешения для каждого пользователя в базе данных SQL. Моя идея состоит в том, чтобы сравнить их имя пользователя AD с таблицами базы данных, которые я создаю (Пользователь, Роль, Разрешение). Как это может быть сделано? Я нашел документацию для пользователей, чтобы создать свою учетную запись, но не с помощью AD.

1 Ответ

0 голосов
/ 13 января 2020

Вы можете использовать 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>();
...