2016-10-12 4 views
0

Я хочу настроить приложение ASP.NET для использования различной аутентификации, зависит от среды. Поэтому для среды разработки я хочу использовать проверку подлинности Windows и для любой другой среды, в которой я хочу использовать аутентификацию Facebook.Как настроить приложение ASP.NET Core для использования проверки подлинности Windows?

Я уже настроил аутентификацию Facebook для среды без разработки. Как настроить проверку подлинности Windows для среды разработки? Аутентификация Windows будет использоваться только во время разработки, поэтому разработчикам не нужно входить в систему при каждом запуске приложения в VS. У нас есть несколько разработчиков, которые означают, что идентификатор Windows будет отличаться в зависимости от того, кто его выполняет. После создания идентификатора Windows я добавлю претензии к идентификатору Windows.

public class Startup 
{ 
    public Startup(IHostingEnvironment env) 
    { 
     // some stuff here for building configuration 
    } 

    public IConfigurationRoot Configuration { get; } 

    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddAuthorization(); 
     services.AddMvc(config => 
     { 
      var policy = new AuthorizationPolicyBuilder() 
       .RequireAuthenticatedUser()    
       .Build(); 
      config.Filters.Add(new AuthorizeFilter(policy)); 
     }); 
    }   

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime appLifetime) 
    {    
     if(env.IsDevelopment()) 
     { 
      // How do i use windows authentication here 
     } 
     else 
     { 
          // this is my custom extension method 
      app.UseFacebookAuthentication(); 
     } 

     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     });    
    } 
} 

ответ

2

для Windows Auth настраивается во время конфигурации веб-хостинга в Program.cs

var host = new WebHostBuilder() 
    .UseKestrel() 
    .UseContentRoot(Directory.GetCurrentDirectory()) 
    .UseIISIntegration() 
    .UseStartup<Startup>() 
    .Build(); 

В частности, это линия UseIISIntegration().

Теперь, когда он сам ничего не делает, ему также необходимо настроить в web.config в узле aspNetCore;

<aspNetCore 
    processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" 
    stdoutLogEnabled="false" 
    stdoutLogFile=".\logs\stdout" 
    forwardWindowsAuthToken="true" /> 

Значение forwardWindowsAuthToken должно быть установлено.

Нет, вы не можете сделать это в рамках проверки env.IsDevelopment().

1

Если вы используете IIS Express для среды разработки, есть быстрый способ настройки проверки подлинности Windows. В папке «Свойства» есть launchSettings.json, и вы можете легко изменить его, чтобы использовать проверку подлинности Windows для разработки без изменения класса Startup.

В этом файле вы можете изменить «windowsAuthentication» на true и «anonymousAuthentication» на false.

Вот пример launchSettings.json:

{ 
    "iisSettings": { 
    "windowsAuthentication": true, 
    "anonymousAuthentication": false, 
    "iisExpress": { 
     "applicationUrl": "http://localhost:6366/", 
     "sslPort": 0 
    } 
    }, 
    profiles": { 
    "IIS Express": {... 
} 

После этой модификации, вы можете запустить приложение, выбрав IIS Express в качестве цели отладки.

Смежные вопросы