2016-03-30 33 views
7

Ho due assistentiConsentire a qualsiasi utente di accesso 'signalr/hub' senza credenziali, utilizzando cors (server esegue l'autenticazione di Windows)

  1. ospite SignalR (autenticazione di Windows, IIS)
  2. resto della pagina web host (autenticazione moduli, IIS)

Ho impostato tutto e funziona con longpolling in Chrome. (1) richiede nome utente e password quando si utilizza Firefox e si naviga verso https://localhost:44301/signalr/hubs.

(1) utilizza l'autenticazione di Windows. Ho cercato di evitare l'autenticazione facendo quanto segue in web.config:

<location path="signalr"> 
    <system.web> 
    <authorization> 
     <allow users="*" /> 
    </authorization> 
    </system.web> 
</location> 

Ma SignalR non è un percorso, perché questo viene generato automaticamente. Ho anche provato a fare questo per esporre i mozzi, inutilmente:

<location path="~/Hubs"> 
    <system.web> 
    <authorization> 
     <allow users="*" /> 
    </authorization> 
    </system.web> 
</location> 

qualcuno potrebbe aiutarmi a trovare un modo per rimuovere l'autenticazione da https://localhost:12321/signalr/ *? (Questo include tutto signalr negoziare le chiamate/++ anche)

risposta

2

Ho risolto questo cambiando le premesse del problema.

Ora l'intero server è accessibile in modo anonimo, ma i percorsi che richiedono l'autenticazione di Windows si sono così specificati.

un esempio di come i controller necessario salvaguardia assomiglia:

<location path="#####.ashx"> 
<system.webServer> 
    <security> 
    <authentication> 
     <anonymousAuthentication enabled="false"/> 
     <windowsAuthentication enabled="true"/> 
    </authentication> 
    <authorization> 
     <remove users="?" roles="" verbs="" /> 
     <add accessType="Deny" users="?" /> 
    </authorization> 
    </security> 
</system.webServer> 
< /location> 

E l'impostazione generale per il server:

<system.webServer> 
    <security> 
     <authentication> 
     <anonymousAuthentication enabled="true"/> 
     <windowsAuthentication enabled="true"/> 
     </authentication> 
     <authorization> 
     <add accessType="Allow" users="?" /> 
     </authorization> 
     <requestFiltering> 
     <!--Auction searches with 250 results generates slightly longer string than standard setting of 2048--> 
     <requestLimits maxQueryString="3072" /> 
     </requestFiltering> 
    </security> 
    </system.webServer> 

questo potrebbe non essere una soluzione valida per tutti, ma ha funzionato per me ... :)


Come by-note: Mentre lavoro con questo ho anche combattuto con IIS Express e in grado di impostare l'autenticazione di Windows in web.config. Questo post mi ha aiutato molto ->IIS Express Windows Authentication

2

Prova

<allow users="?"/> 

quanto consente anonimo, con asterisco "*" si consente "Tutti gli utenti".

+0

Sicuramente immagino che "Tutti gli utenti" includa anche utenti "anonimi" ... tuttavia il problema non lo è? o *, è il fatto che il "percorso di localizzazione" non esiste. –

+0

Il titolo diceva Remove Auth, la cosa più veloce nella mia testa era quella di consentire solo l'anonimato. – Froxer

+0

Grazie per il tentativo ... prenderò in considerazione di cambiare il titolo allora .... –