2009-08-05 39 views
8

Tôi có một máy chủ phát triển chạy IIS 7.0 với ASP.NET MVC Web Application, xác thực bằng cách sử dụng Forms Authentication/Membership.IIS7 - Mật khẩu bảo vệ máy chủ phát triển

Tôi cần có khả năng ngăn người dùng trái phép xem trang web này. Tuy nhiên, khách hàng của chúng tôi có thể nhập tên người dùng/mật khẩu đơn giản để truy cập.

Sau khi làm như vậy, họ sẽ có thể tương tác với ứng dụng web bằng cách sử dụng Xác thực biểu mẫu như thể họ vừa mới đến một trang web không được bảo vệ.

Mọi đề xuất?

+2

Đây là một thất bại tuyệt đối/thiếu hụt trên phần IIS7. Trường hợp nghiêm trọng về kỹ thuật quá mức và tầm nhìn ngắn của Microsoft ở đây. Điều này sẽ là một cú nhấp chuột "Thêm rẻ mật khẩu popup mật khẩu" nút riêng biệt cho tất cả các thế giới học thuật đẹp hơn các mô-đun xác thực phức tạp và crap mà họ đã đưa ra. – Aaron

+0

Thật đáng ngạc nhiên khi số lượng duds dường như hoàn toàn sẵn sàng chấp nhận điều này và đưa lên bằng cách viết các mô-đun trình bao bọc tùy chỉnh của riêng họ và tương tự. Chỉ cần tổng số người quá kỹ thuật, có được với chương trình. Điều này sẽ rất đơn giản. Tôi sẽ không viết bất kỳ mã tùy chỉnh nào để triển khai mật khẩu bật lên được sử dụng để mất 2 giây để định cấu hình. Phải có một cách đơn giản. – Aaron

+0

Rất vui khi thấy nó không chỉ là tôi gặp vấn đề này –

Trả lời

-1

Chúng tôi đã viết mô-đun tùy chỉnh cho IIS để cho phép một số phạm vi IP nhất định thông qua tự động và hiển thị bất kỳ ai khác có cuộc đối thoại đăng nhập. Một khi họ đã đăng nhập, nó lưu trữ thực tế đó trong phiên của họ và chỉ đơn giản là thông qua các yêu cầu thông qua.

Làm việc được, có thể được áp dụng cho bất kỳ điều gì trong các trang web hoặc dịch vụ IIS.

+0

Không tốt khi ISP của tôi cung cấp cho tôi một IP động hoàn toàn ngẫu nhiên mỗi lần.Cũng không tốt khi tôi cần cấp quyền truy cập cho một nhóm người thử nghiệm hoặc đối tác kinh doanh được chọn, nói rằng 50 trong số họ, tất cả những ai cần truy cập vào trang web dev. Tôi không thể làm cho tất cả họ dành một giờ để đi loanh quanh vì địa chỉ IP của họ bởi vì tất cả họ đều nằm ở các địa điểm khác nhau và họ là những người kinh doanh, chứ không phải người kỹ thuật. Họ không có ý tưởng làm thế nào để có được địa chỉ IP của họ từ router của họ/cấu hình mạng vv Tôi cần phải chỉ đơn giản là có thể gửi email cho họ với một mật khẩu để họ có thể dễ dàng nhấn trang web. – Aaron

5

Câu trả lời trước của tôi cho biết biểu mẫu auth và http xác thực cơ bản có thể nằm cạnh nhau trong chế độ tích hợp II7. Tôi đã hoàn toàn sai và kể từ đó đã thực hiện một giải pháp đơn giản.

Sử dụng một tùy chỉnh HttpModule bạn có thể thêm auth cơ bản cùng bên thường xuyên các hình thức auth

public class CustomBasicAuthHttpModule : IHttpModule 
{ 
    private HttpApplication httpApplicationContext; 

    public void Dispose() 
    { 
    } 

    public void Init(HttpApplication context) 
    { 
     this.httpApplicationContext = context; 
     context.BeginRequest += this.OnBeginRequest; 
     context.EndRequest += this.OnEndRequest; 
    } 

    private void OnBeginRequest(object sender, EventArgs e) 
    { 
     // your logic of checking Auth header goes here 
     if (this.httpApplicationContext.Request.Headers["Authorization"] != "Basic base64-encoded-user:pass") 
     { 
      this.httpApplicationContext.Response.StatusCode = 401; 
      this.httpApplicationContext.Response.End(); 
     } 
    } 

    private void OnEndRequest(object sender, EventArgs e) 
    { 
     if (this.httpApplicationContext.Response.StatusCode == 401) 
     { 
      this.httpApplicationContext.Response.AddHeader("WWW-Authenticate", "Basic"); 
     } 
    } 

sau đó trong web.config của bạn

<system.webServer> 
    <modules> 
     <add name="CustomBasicAuthHttpModule" type="Namespace.CustomBasicAuthHttpModule, AssemblyName"/> 
    </modules> 
    </system.webServer> 
+0

Thực ra nó không đơn giản trong trường hợp của tôi. Giải pháp của bạn là điều đầu tiên tôi thử - nhưng bằng cách nào đó "xác thực cơ bản" can thiệp vào "xác thực biểu mẫu" của dự án MVC cơ bản nhất như chúng ta đều biết từ Visual Studio/New Project. Sau khi xác thực qua "xác thực cơ bản", tôi được chuyển hướng đến url đăng nhập mặc định bất cứ điều gì tôi thử và trình duyệt của tôi thậm chí không được phép tải xuống tệp Site.css. Bất kỳ ý tưởng nào ?! –

+0

Việc xác thực cơ bản IIS sẽ không có gì để làm với các hình thức xác thực, hoàn toàn khác nhau. Cách bạn đặt ra câu hỏi của mình khiến cho âm thanh như bạn muốn chặn tất cả quyền truy cập ngay cả trang đăng nhập biểu mẫu cho bất kỳ ai trừ khách hàng của bạn, nhưng một khi đã qua phản hồi thử thách IIS, họ sẽ đăng nhập thông qua xác thực biểu mẫu. Tôi không biết làm thế nào để có IIS xác thực thay mặt cho các hình thức sql, xin lỗi. Tôi đoán tôi không nhận được điểm hoặc là, có gì sai với các hình thức xác thực, tại sao một thách thức IIS-phản ứng được tốt hơn? – JeremyWeir

+0

Bạn hoàn toàn sai jayrdub. Câu hỏi đã được giải thích tốt và đây là một yêu cầu rất phổ biến. IIS tự tuyên bố rằng "xác thực cơ bản không thể được sử dụng với bất kỳ phương thức xác thực dựa trên chuyển hướng nào như xác thực biểu mẫu". "Xác thực Windows" cũng đi kèm với cảnh báo tương tự. Bạn có thể sử dụng cả xác thực cơ bản và cửa sổ không có vấn đề, cung cấp cho bạn cũng không có xác thực biểu mẫu đang chạy bên dưới trong ứng dụng. Câu hỏi của OP là rất hợp pháp và là một yêu cầu chung. – Aaron

2

tôi chỉ làm điều này với Helicon Ape. Giấy phép miễn phí bao gồm 3 trang web, mà đối với tôi là đủ tốt.

Nếu bạn sử dụng tính năng này trên trang web, chỉ cần nhớ kiểm tra xem giấy phép có được kích hoạt cho trang web hay không (menu bắt đầu> helicon> ape> người quản lý, trợ giúp, người quản lý giấy phép).

+0

Tiện ích bổ sung của bên thứ ba không cần thiết cho một tác vụ đơn giản như vậy. – Aaron

+2

Không, không nên. Không có nghĩa là nó không phải là, thật đáng buồn. –

0

Như Aaron đã chỉ ra, điều này không đơn giản trong IIS7. Bây giờ, mặt trái là thủ thuật cũ là không an toàn lúc tốt nhất và có những cách tốt hơn để làm điều đó ngay bây giờ và có thể sử dụng tất cả các phương pháp authenticaiton với tất cả các ứng dụng có rất nhiều lợi thế. Có một số cách để giải quyết vấn đề này như:

a) giữ trang web phát triển phía sau VPN mà khách hàng của bạn có thể truy cập.
b) đảo ngược proxy trang web và cho phép proxy thực hiện xác thực http.
c) Tham gia nhiều hơn một chút sẽ là xây dựng ứng dụng của bạn bằng chế độ demo. Thủ thuật ở đây là để làm cho nó bật hoặc tắt từ yêu cầu đầu tiên được đưa ra một chuỗi truy vấn phép thuật đặc biệt. Kiểm tra điều đó trong Session_Start() sau đó gắn thẻ người dùng đi kèm với nó và lợi nhuận.

Các vấn đề liên quan