Где установить пользовательский ClaimsPrincipal для всех запросов HttpRequest - PullRequest
0 голосов
/ 25 марта 2019

Я портирую старое приложение на ASP.NET Core, которое использует проверку подлинности Windows (настроено в IIS, соответственно launchsetting.json).

Я бы хотел переопределить аутентификацию, чтобы использовать настраиваемый жестко закодированный ClaimsPrincipal при работе в режиме разработки.

public class Startup
{
   public void Configure(IApplicationBuilder app, IHostingEnvironment env)
   {

       if (env.IsDevelopment())
       {
           app.UseDeveloperExceptionPage();
       }
       app.UseMvc();    
   }
}

Я не уверен, что это правильное место для установки идентификатора и конфигурации служб / промежуточного программного обеспечения для использования ...

1 Ответ

0 голосов
/ 11 апреля 2019

Создание наборов промежуточного программного обеспечения HttpContext.User в жестком коде ClaimsPrincipal

public class WindowsUserMiddleware
{
    private readonly RequestDelegate _next;

    public WindowsUserMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task InvokeAsync(HttpContext httpContext)
    {
        var claims = new List<Claim> { /* add claims */ };
        var userIdentity = new ClaimsIdentity(claims, "NonEmptyAuthType");

        httpContext.User = new ClaimsPrincipal(userIdentity);

        await _next(httpContext);
    }
}

public static class WindowsUserMiddlewareExtensions
{
    public static IApplicationBuilder UseWindowsUser(this IApplicationBuilder applicationBuilder)
    {
        return applicationBuilder.UseMiddleware<WindowsUserMiddleware>();
    }

}

И использовать его только в режиме разработки

if (env.IsDevelopment())
{
    app.UseWindowsUser();
    app.UseDeveloperExceptionPage();
}
app.UseMvc();   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...