2016-10-12 2 views
0

Ich möchte ASP.NET-Anwendung für die Verwendung unterschiedlicher Authentifizierung abhängig von der Umgebung konfigurieren. Für die Entwicklungsumgebung möchte ich die Windows-Authentifizierung verwenden und für alle anderen Umgebungen möchte ich die Facebook-Authentifizierung verwenden.Wie wird die ASP.NET Core-Anwendung für die Verwendung der Windows-Authentifizierung konfiguriert?

Ich habe bereits Facebook-Authentifizierung für nicht Entwicklungsumgebung konfiguriert. Wie konfiguriere ich die Windows-Authentifizierung für die Entwicklungsumgebung? Die Windows-Authentifizierung wird nur während der Entwicklung verwendet, sodass sich Entwickler nicht jedes Mal anmelden müssen, wenn sie eine Anwendung in VS ausführen. Wir haben mehrere Entwickler, was bedeutet, dass die Windows-Identität davon abhängt, wer sie ausführt. Sobald die Windows-Identität erstellt ist, werde ich Ansprüche auf Windows-Identität hinzufügen.

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?}"); 
     });    
    } 
} 

Antwort

2

Windows-Auth wird während der Web-Host-Konfiguration in Program.cs

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

Insbesondere ist es die UseIISIntegration() -Linie.

Jetzt, da es selbst nichts tut, muss es auch in web.config im aspNetCore-Knoten konfiguriert werden;

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

Der Wert muss festgelegt werden.

Also nein, Sie können es nicht innerhalb einer env.IsDevelopment() Prüfung tun.

1

Wenn Sie IIS Express für die Entwicklungsumgebung verwenden, können Sie die Windows-Authentifizierung schnell einrichten. Im Ordner Eigenschaften befindet sich ein launchSettings.json, und Sie können ihn problemlos ändern, um die Windows-Authentifizierung für die Entwicklung zu verwenden, ohne den Start der Klasse zu ändern.

In dieser Datei können Sie "windowsAuthentication" zu "True" und "AnonymousAuthentication" zu False ändern.

Hier ist die Probe launchSettings.json:

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

Nach dieser Änderung können Sie die Anwendung, indem Sie IIS Express als Debug-Ziel ausgeführt werden.

Verwandte Themen