2013-07-12 56 views
7

我們有一個Azure網站託管靜態網站(只是一些HTML,CSS,Javascript),然後通過AJAX調用與我們的Azure移動服務進行通信。將驗證添加到靜態Azure網站

我們想爲這個網站添加一些非常簡單的認證(只需要一個靜態的用戶名/密碼即可)。

請推薦最簡單的方式來完成此操作。

或者可能有更好的選擇來提供靜態內容,其他Azure網站?

回答

14

利用靜態用戶名和密碼進行身份驗證的一種非常簡單的形式可以通過利用本文所述的與IIS集成的ASP.NET身份驗證和授權來實現:Apply ASP.NET Authentication and Authorization Rules to Static Content with IIS 7.0's Integrated Pipeline Feature

Se this sample GitHub project爲例。代碼的相關作品是你應該在根目錄中放置(這將是公共的)這個Web.config文件:

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

而且,你可以在一個子目錄地方(這將是該Web.config文件限於):

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

您還需要一個Login.aspx文件與HTML表單和服務器端驗證邏輯。有關示例,請參閱示例項目中的Login.aspx。

通過這種方式,您將能夠在根目錄級別公用文件和在子目錄下的私有文件。如果您想保護甚至是根級別,請相應地調整授權規則。

有關配置選項的文檔查看這些MSDN網頁:

+0

感謝您的建議。我會嘗試一下並回信。 –

+0

它確實有效。謝謝費爾南多。 還有一個問題,如果你不介意。我想要保護所有的文件,甚至在根目錄下。所以我改變了第一個Web.config(這是根級別),像這樣:''。現在,當我訪問http://mysite.azurewebsites.net/index.html時,它會重定向到Login.aspx,因此它可以正常工作。但是,當我去http://mysite.azurewebsites.net/(沒有指定index.html)時,它顯示index.html,但沒有任何樣式或圖像。 我從來沒有使用IIS和.NET,所以請你也可以快速解決這個問題呢? 謝謝。 –

+1

我們通過添加'',''部分。再次感謝你,費爾南多,你的回答。 –

0

會利用像Twitter或Microsoft帳戶一樣的社交服務提供商工作嗎?可能少設置(即不需要管理自己的身份存儲)。

3

這是一個已經先前回答一個老問題,但如果你尋找最簡單的解決方案,無需代碼或配置更改,就可以使用Azure網站身份驗證/ A uthorization(聲明,我幫助建立這個功能)。這裏有一些鏈接:

博客文章: http://azure.microsoft.com/blog/2014/11/13/azure-websites-authentication-authorization/

演示視頻: http://azure.microsoft.com/en-us/documentation/videos/azure-websites-easy-authentication-and-authorization-with-chris-gillum/

編輯: 這裏是一個較新的博客文章描述瞭如何使用社交提供商(推特,臉譜,谷歌,微軟賬戶)除了默認的Azure AD:https://azure.microsoft.com/en-us/blog/announcing-app-service-authentication-authorization/

+0

克里斯,我似乎無法找到一種方法來保護使用延遲身份驗證的靜態HTML的子文件夾。我發現我可以將一個特殊的登錄鏈接放到網站的未受保護部分的內容上,但是如何避免直接訪問html文件? – SergioL

+1

@SergioL你可以使用URL授權規則:https://blogs.msdn.microsoft.com/appserviceteam/2016/11/17/url-authorization-rules/ –

+0

只是好奇 - 你會用這個認真的財務網站? – montewhizdoh