2013-07-12 25 views
7

Chúng tôi có một trang web Azure lưu trữ một trang web tĩnh (chỉ một số HTML, CSS, Javascript), sau đó giao tiếp với Azure Mobile Services của chúng tôi bằng các cuộc gọi AJAX.Thêm xác thực vào Trang web Azure tĩnh

Chúng tôi muốn thêm một số xác thực rất đơn giản cho trang web này (chỉ cần tên người dùng/mật khẩu tĩnh sẽ là đủ).

Vui lòng giới thiệu cách dễ nhất để thực hiện việc này.

Hoặc có thể có một số tùy chọn tốt hơn để phân phát nội dung tĩnh, các trang web Azure khác sau đó?

Trả lời

14

Một hình thức xác thực rất đơn giản với tên người dùng và mật khẩu tĩnh có thể đạt được bằng cách tận dụng xác thực và ủy quyền của ASP.NET, được tích hợp với IIS như được mô tả trong bài viết này: Apply ASP.NET Authentication and Authorization Rules to Static Content with IIS 7.0's Integrated Pipeline Feature.

Se this sample GitHub project để biết ví dụ. Các mảnh có liên quan của mã là này file Web.config rằng bạn nên đặt trong thư mục gốc (mà sẽ được công khai):

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

Và file Web.config này mà bạn có thể đặt trong một thư mục con (đó sẽ là bị hạn chế):

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

Bạn cũng cần một tệp Login.aspx với biểu mẫu HTML và logic xác thực phía máy chủ. Xem Login.aspx trong dự án mẫu cho một ví dụ.

Bằng cách này bạn có thể lưu trữ cả hai tệp công khai ở cấp thư mục gốc và tệp riêng tư tại thư mục con. Nếu bạn muốn bảo vệ ngay cả cấp độ gốc, chỉ cần điều chỉnh các quy tắc ủy quyền cho phù hợp.

Đối với tài liệu về các lựa chọn cấu hình thấy các trang MSDN:

+0

Cảm ơn bạn đã đề xuất. Tôi sẽ thử và viết lại. –

+0

Nó hoạt động. Cảm ơn Fernando. Chỉ còn một câu hỏi nữa, nếu bạn không phiền. Tôi muốn bảo vệ tất cả các tệp ngay cả ở cấp độ gốc.Vì vậy, tôi đã thay đổi Web.config đầu tiên (mà là ở cấp độ gốc) như thế này: ''. Bây giờ khi tôi truy cập http://mysite.azurewebsites.net/index.html, nó chuyển hướng đến Login.aspx, vì vậy nó hoạt động đúng. Tuy nhiên, khi tôi truy cập http://mysite.azurewebsites.net/ (không chỉ định index.html), nó hiển thị index.html nhưng không có bất kỳ kiểu hoặc hình ảnh nào. Tôi chưa bao giờ làm việc với IIS và .NET, vì vậy, bạn có thể khắc phục nhanh điều này không? Cảm ơn. –

+1

Chúng tôi đã khắc phục sự cố này bằng cách thêm ' ',' '. Cảm ơn bạn một lần nữa, Fernando, cho câu trả lời của bạn. –

0

Sẽ tận dụng nhà cung cấp dịch vụ xã hội như Twitter hoặc Tài khoản Microsoft? Có lẽ ít thiết lập hơn (tức là không cần quản lý kho lưu trữ danh tính của riêng bạn).

3

Đây là một câu hỏi cũ đó là được trả lời trước đó, nhưng nếu bạn tìm kiếm giải pháp dễ nhất có thể không yêu cầu thay đổi mã hoặc cấu hình, bạn có thể sử dụng Xác thực trang web Azure/A uthorization (từ chối trách nhiệm, tôi đã giúp xây dựng tính năng này). Dưới đây là một số liên kết:

Blog 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: Và đây là một bài viết trên blog gần đây mô tả làm thế nào bạn có thể sử dụng các nhà cung cấp xã hội (Twitter, Facebook, Google, Tài khoản Microsoft) ngoài Azure AD mặc định: https://azure.microsoft.com/en-us/blog/announcing-app-service-authentication-authorization/

+0

Chris, tôi dường như không thể tìm cách bảo vệ thư mục con của html tĩnh bằng cách sử dụng xác thực bị trì hoãn. Tôi thấy rằng tôi có thể đặt một liên kết đăng nhập đặc biệt cho nội dung từ một phần không được bảo vệ của trang web, nhưng làm thế nào tôi có thể bảo vệ chống lại việc truy cập tệp html trực tiếp? – SergioL

+1

@SergioL bạn có thể sử dụng quy tắc ủy quyền URL cho điều đó: https://blogs.msdn.microsoft.com/appserviceteam/2016/11/17/url-authorization-rules/ –

+0

chỉ tò mò - bạn có sử dụng quy tắc này cho tài chính nghiêm túc không trang mạng? – montewhizdoh