2013-07-12 18 views
7

Mamy witrynę Azure hostującą witrynę statyczną (tylko niektóre pliki HTML, CSS, Javascript), która następnie komunikuje się z naszymi usługami Azure Mobile Services przez AJAX.Dodawanie uwierzytelniania do statycznej witryny Azure

Pragniemy dodać bardzo proste uwierzytelnianie do tej strony (wystarczy statyczna nazwa użytkownika/hasło).

Zalecamy najprostszy sposób, aby to zrobić.

A może jest jakiś lepszy sposób wyświetlania zawartości statycznej, innej niż witryny Azure?

Odpowiedz

14

Bardzo prostą formę uwierzytelniania ze statyczną nazwą użytkownika i hasłem można uzyskać, stosując uwierzytelnianie i autoryzację ASP.NET, zintegrowane z usługami IIS zgodnie z opisem w tym artykule: Apply ASP.NET Authentication and Authorization Rules to Static Content with IIS 7.0's Integrated Pipeline Feature.

Se this sample GitHub project na przykład. Odpowiednie fragmenty kodu są to plik Web.config, który należy umieścić w katalogu głównym (co byłoby publiczne):

<?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> 

A ten plik Web.config, które można umieścić w podkatalogu (co byłoby ograniczona):

<?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> 

trzeba również plik Login.aspx z formularza HTML i logiki po stronie serwera uwierzytelniania. Zobacz przykład Login.aspx w przykładowym projekcie.

W ten sposób będziesz mógł przechowywać zarówno publiczne pliki na poziomie root, jak i prywatne pliki w podkatalogach. Jeśli chcesz chronić nawet poziom główny, dostosuj odpowiednio reguły autoryzacji.

Dokumentację na temat opcji konfiguracji, patrz te strony MSDN:

+0

Dzięki za sugestie. Wypróbuję to i odpiszę. –

+0

To działa. Dzięki Fernando. Jeszcze jedno pytanie, jeśli nie masz nic przeciwko. Chciałbym chronić wszystkie pliki nawet na poziomie root.Więc zmieniłem najpierw Web.config (który jest na poziomie root) w następujący sposób: ''. Teraz, kiedy wchodzę na http://mysite.azurewebsites.net/index.html, przekierowuje się do Login.aspx, więc działa poprawnie. Kiedy jednak przejdę do http://mysite.azurewebsites.net/ (bez określenia index.html), wyświetli on index.html, ale bez żadnych stylów ani obrazów. Nigdy nie pracowałem z usługami IIS i .NET, więc czy możesz to szybko poprawić? Dzięki. –

+1

Naprawiliśmy ten problem, dodając ' ',' '. Jeszcze raz dziękuję, Fernando, za odpowiedź. –

0

Czy korzystanie z usług dostawcy usług społecznych, takich jak Twitter czy konto Microsoft, działa? Prawdopodobnie mniej instalacji (tzn. Nie trzeba zarządzać własnym magazynem tożsamości).

3

Jest to stary pytanie, które zostało wcześniej odpowiedział, ale jeśli jesteś szukając najprostszego możliwego rozwiązania, które nie wymaga żadnych zmian kodu lub konfiguracji, można użyć uwierzytelniania witryn internetowych Azure/A uthorization (disclaimer, pomogłem zbudować tę funkcję). Oto kilka linków:

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

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

EDIT: I tu jest nowsza blogu opisującym w jaki sposób można korzystać z dostawców społecznych (Twitter, Facebook, Google, konta Microsoft) oprócz domyślnego Azure AD: https://azure.microsoft.com/en-us/blog/announcing-app-service-authentication-authorization/

+0

Chris, nie mogę znaleźć sposobu na ochronę tylko podfolderów statycznego html przy użyciu uwierzytelniania odroczonego. Widzę, że mogę umieścić specjalne łącze logowania do treści z niechronionej części strony, ale w jaki sposób mogę zabezpieczyć się przed bezpośrednim dostępem do pliku html? – SergioL

+1

@SergioL można użyć reguł autoryzacji adresu URL: https://blogs.msdn.microsoft.com/appserviceteam/2016/11/17/url-authorization-rules/ –

+0

po prostu ciekawi-użyłbyś tego do poważnych finansowych stronie internetowej? – montewhizdoh

Powiązane problemy