2013-09-06 43 views
6

Có rất nhiều thông tin về cách xác thực Mẫu hoặc xác thực Windows bằng SignalR. Tôi quan tâm đến việc sử dụng DB xác thực của riêng tôi. Tôi sử dụng một máy khách .NET vì tác nhân kết nối là một dịch vụ, không phải là một trình duyệt web với một con người phía sau nó. Tôi lý tưởng như mã khách hàng của tôi sử dụng:Làm cách nào để sử dụng xác thực cơ bản tùy chỉnh với SignalR (máy khách .NET)?

hubConnection.Credentials = new NetworkCredential(userName, password); 

Và mã máy chủ của tôi để sử dụng [Ủy quyền] trên các hub và để có Ngữ cảnh. Người dùng có sẵn cho tôi. Tất cả các giao thức đều trên https vì vậy tôi không quan tâm đến văn bản thuần túy.

Tôi đã đọc hướng dẫn asp.net basic authentication cho biết cách ghi đè cơ chế xác thực bằng IHttpModule. Tuy nhiên, tiêu đề 'Ủy quyền' dường như không được đặt trong các yêu cầu đến từ máy khách .NET SignalR khi tôi ngắt mã trong HttpModule.

Tất cả những gì tôi muốn làm là trivially chuyển tên người dùng và mật khẩu từ máy khách và mã lên cách xác thực xảy ra trên máy chủ. Điều đó thật khó? Không có phép thuật. Không có Active Directory. Chỉ cần xác thực bởi tôi.

Cách tiếp cận hiện tại, làm việc của tôi là đặt tiêu đề tùy chỉnh được giải thích ở cấp SignalR (sử dụng tùy chỉnh AuthorizeAttribute), tuy nhiên 'cách đúng đắn để thực hiện' là không thực hiện xác thực ở cấp ủy quyền và thay vào đó có máy chủ web làm điều đó trước khi bất kỳ công cụ SignalR nào xảy ra.

Có ai vui lòng mô tả quy trình tốt để xác thực đầy đủ, nhưng đơn giản, tùy chỉnh không?

Trả lời

5

Khách hàng

var connection = new Connection(url + "/echo"); connection.Credentials = new NetworkCredential("user", "password"); await connection.Start();

server

app.Map("/basicauth", map => { map.UseBasicAuthentication(new BasicAuthenticationProvider()); map.MapSignalR<AuthenticatedEchoConnection>("/echo"); map.MapSignalR(); });

NuGet Package yêu cầu: Microsoft.Owin.Security.Basic

Bạn có thể xem mẫu đầy đủ here

+0

Các O chiến thắng công cụ là nếu bạn đang tự lưu trữ, phải không? Tôi sẽ được lưu trữ trong IIS và sẽ không có app.Anything() Tôi nghĩ. Tôi ngạc nhiên không chỉ có một 'cung cấp một phương pháp ValidateUser và tắt bạn đi' – Robin

+0

Bạn có thể sử dụng Owin lưu trữ trên IIS –

+5

Tôi đã tìm kiếm cả ngày cho gói Microsoft.Owin.Security.Basic NuGet. Nó không còn ở nuget.org nữa. Có trên máy chủ NuGet khác không? Trên trang dự án Katana, nó cho biết gói đã được phát hành với phiên bản 2.0.0.0. Cảm ơn đã giúp đỡ. –

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