2013-07-12 23 views
7

Abbiamo un sito Web di Azure che ospita un sito statico (solo alcuni HTML, CSS, Javascript), che quindi comunica con i servizi mobili di Azure tramite chiamate AJAX.Aggiunta dell'autenticazione al sito Web di Azure statico

Vorremmo aggiungere qualche autenticazione molto semplice a questo sito (basta un nome utente statico/password sufficiente).

Si prega di raccomandare il modo più semplice per farlo.

Oppure potrebbe esserci un'opzione migliore per la pubblicazione di contenuto statico, ad eccezione dei siti Web di Azure?

risposta

14

Una forma di autenticazione molto semplice con un nome utente e una password statici può essere ottenuta sfruttando l'autenticazione e l'autorizzazione di ASP.NET, integrata con IIS come descritto in questo articolo: Apply ASP.NET Authentication and Authorization Rules to Static Content with IIS 7.0's Integrated Pipeline Feature.

Se this sample GitHub project per un esempio. I pezzi rilevanti di codice sono questo file web.config che si dovrebbe inserire nella directory principale (che sarebbe pubblico):

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <compilation debug="false" /> 
     <authentication mode="Forms"> 
      <forms> 
       <credentials passwordFormat="Clear"> 
        <user name="Alice" password="secret" /> 
       </credentials> 
      </forms> 
     </authentication> 
     <!-- Unless specified in a sub-folder's Web.config file, 
      any user can access any resource in the site --> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
    <system.webServer> 
     <modules> 
      <remove name="FormsAuthenticationModule" /> 
      <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />    
      <remove name="UrlAuthorization" /> 
      <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /> 
     </modules> 
    </system.webServer> 
</configuration> 

E questo file web.config che si potrebbe inserire in una sottodirectory (che sarebbe limitato):

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <!-- Anonymous users are denied access to this folder (and its subfolders) --> 
     <authorization> 
      <deny users="?" /> 
     </authorization> 
    </system.web> 
</configuration> 

è necessario anche un file Login.aspx con il modulo HTML e la logica di autenticazione lato server. Vedere il Login.aspx nel progetto di esempio per un esempio.

In questo modo sarà possibile ospitare sia file pubblici a livello di root sia file privati ​​in sottodirectory. Se si desidera proteggere anche il livello root, è sufficiente regolare di conseguenza le regole di autorizzazione.

Per la documentazione sulle opzioni di configurazione vedere queste pagine MSDN:

+0

Grazie per i suggerimenti. Lo proverò e scriverò. –

+0

Funziona. Grazie Fernando. Un'altra domanda, se non ti dispiace. Mi piacerebbe proteggere tutti i file anche a livello di root.Così ho modificato prima Web.config (che è a livello di root) in questo modo: ''. Ora quando vado su http://mysite.azurewebsites.net/index.html reindirizza a Login.aspx, quindi funziona correttamente. Ma quando vado su http://mysite.azurewebsites.net/ (senza specificare index.html) mostra index.html ma senza stili o immagini. Non ho mai lavorato con IIS e .NET, quindi per favore puoi dare una soluzione rapida anche a questo? Grazie. –

+1

Abbiamo risolto questo problema aggiungendo ' ',' 'sezione. Grazie ancora, Fernando, per la tua risposta. –

0

Fare leva su un fornitore di servizi sociali come Twitter o account Microsoft funziona? Probabilmente meno impostazioni (ovvero non è necessario gestire il proprio archivio delle identità).

3

Questa è una vecchia questione che è stata risolta in precedenza, ma se siete cercando la soluzione più semplice possibile che non richiede modifiche al codice o alla configurazione, è possibile utilizzare l'autenticazione dei siti Web di Azure/A autorizzazione (disclaimer, ho contribuito a costruire questa funzione). Ecco alcuni link:

Post: http://azure.microsoft.com/blog/2014/11/13/azure-websites-authentication-authorization/

Demo Video: http://azure.microsoft.com/en-us/documentation/videos/azure-websites-easy-authentication-and-authorization-with-chris-gillum/

EDIT: Ed ecco un recente post più blog che descrive come è possibile utilizzare i provider di social (Twitter, Facebook, Google, Microsoft Account) in aggiunta al predefinito Azure AD: https://azure.microsoft.com/en-us/blog/announcing-app-service-authentication-authorization/

+0

Chris, non riesco a trovare un modo per proteggere solo una sottocartella di html statico usando l'autenticazione posticipata. Vedo che posso inserire un link di accesso speciale al contenuto da una parte non protetta del sito, ma come potrei proteggere dall'accesso diretto al file html? – SergioL

+1

@SergioL è possibile utilizzare le regole di autorizzazione URL per questo: https://blogs.msdn.microsoft.com/appserviceteam/2016/11/17/url-authorization-rules/ –

+0

solo per curiosità -si potrebbe usare questo per una seria finanziaria sito web? – montewhizdoh

Problemi correlati