2016-06-08 36 views
8

Fornire indicazioni su come implementare l'autenticazione di Windows su ASP.NET Core RC2 +.Autenticazione di Windows con nucleo asp.net

vedo altre domande in modo che descrivono portatore di autenticazione come Bearer Authentication with ASP.NET Core RC2 404 instead of 403

Ma non è quello che sto cercando.

+3

Si intende l'utilizzo di NTLM per l'accesso automatico agli utenti del dominio? Quindi è necessario utilizzare IIS e ciò che IIS offre per farlo e scegliere il modello "Autenticazione Windows" durante la creazione di una nuova applicazione. Se intendi che i moduli si colleghino (cioè utilizzando Identity), non c'è modo di farlo subito e devi scrivere la tua Authroization di identità per esso. Non verrà implementato per impostazione predefinita per motivi di sicurezza – Tseng

+0

Grazie. – Jigar

+0

Ho passato un'età alla ricerca di una soluzione per questo, si scopre un semplice 'HttpContext.User.Identity.Name' funziona come in precedenza in ASP.NET 4 –

risposta

8

È possibile farlo usando WebListener, in questo modo:

  1. Aprire il project.json e aggiungere WebListener dipendenze:

    "dependencies" : { 
        ... 
        "Microsoft.AspNetCore.Server.WebListener": "0.1.0-rc2-final" 
        ... 
    } 
    
  2. Aggiungi WebListener ai comandi (ancora una volta in Project.json)

    "commands": { 
        "weblistener": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener" 
        }, 
    
  3. In Startup.cs, specificare il WebHostBuil der utilizzare WebListener con NTLM

    var host = new WebHostBuilder() 
         // Some configuration 
         .UseWebListener(options => options.Listener.AuthenticationManager.AuthenticationSchemes = AuthenticationSchemes.NTLM) 
         // Also UseUrls() is mandatory if no configuration is used 
         .Build(); 
    

Questo è tutto!

+0

Funzionerà su altre piattaforme come Mac e Linux ?? – Jigar

+3

No. Sia IIS che WebListener possono ora ospitare applicazioni .NET Core solo su Windows. Controlla il link sottostante per la documentazione ufficiale dal team di ASP.NET https://docs.asp.net/en/latest/fundamentals/servers.html#weblistener –

+0

Kerberos è supportato? O meglio, AuthenticationSchemes.Negoziare? – pomeroy

4

Questo non sembra funzionare più nel .Net Core 1.0.0 (RTM). Faccio il WebHostBuilder esattamente come sopra nella risposta di Ivan Prodanov; viene eseguito, non viene visualizzato alcun errore, ma HttpContext.User non è contrassegnato con WindowsIdentity. A seguito di codice utilizzato per lavorare in ASP.Net 5 beta6:

in project.json:

"version": "1.0.0" 
"dependencies": { 
    "Microsoft.AspNetCore.Owin": "1.0.0", 
    "Microsoft.AspNetCore.Server.WebListener": "0.1.0", 

in classe middleware:

public async Task Invoke(HttpContext context) 
{ 
    try 
    { 
     ClaimsPrincipal principal = context.User; 

// <-- get invalidcastexception here: 
     WindowsIdentity winIdentity = (WindowsIdentity)principal.Identity; 

     .... 
     .... 
+2

Puoi provare ad aggiungere '" Microsoft.AspNetCore.Server.IISIntegration ":" 1.0.0 "' nelle tue dipendenze – Jigar

+3

Nella v0.1.0 erano options.Listener.AuthenticationManager.AuthenticationSchemes che è stato rinominato options.ListenerSettings.Authentication.Schemes . Inoltre ora devi aggiungere .AllowAnonymous = false –

+3

Fonte per sopra: https://github.com/aspnet/Announcements/issues/204 –

Problemi correlati