2015-02-04 27 views
8

Tôi đã thấy một số cách để thiết lập hỗ trợ nhà cung cấp bên ngoài để xác thực trong ASP.NET Web API bằng cách sử dụng danh tính, tuy nhiên tất cả đều dựa vào cookie, được đặt sau người dùng được nhà cung cấp bên ngoài ủy quyền thành công (được gọi là "AspNet.External"), sau đó nó được chuyển tiếp tới điểm cuối mã thông báo trên chính API Web.API Web API của nhà cung cấp bên ngoài ASP.NET không có cookie

Có cách nào để phá vỡ điều này và sử dụng xác thực bên ngoài với ASP.NET Web API mà không cần sử dụng cookie không? Lý do cho mối quan tâm này là tôi muốn tích hợp xác thực này trong ứng dụng dành cho thiết bị di động của mình, nhưng người dùng có thể vô hiệu hóa cookie bất kỳ lúc nào, khiến ứng dụng của tôi không sử dụng được.

+0

Trong dự án asp.net thường xuyên, bạn có thể sử dụng phiên cookie sử dụng 'url', tức là định danh duy nhất để xác định một phiên được gắn thẻ để URL dưới dạng chuỗi truy vấn. Tôi hy vọng nếu bạn có thể có được ví dụ như vậy trong api web, điều đó sẽ giải quyết mục đích của bạn. –

+0

Nó không rõ ràng với tôi những gì bạn đang yêu cầu ở đây. Mỗi yêu cầu phải tự xác định bằng cách nào đó, và đó thường là với một cookie vì đây là cách an toàn nhất để làm điều đó. Bạn có thể sử dụng tham số chuỗi truy vấn, nhưng điều đó rất không an toàn vì truy vấn được ghi lại trong nhật ký định tuyến và proxy, cũng như nhật ký máy chủ. –

+0

Có, tôi hiểu rằng yêu cầu cần một cách để được xác định, nhưng tôi không chắc liệu cookie có phải là cách tốt nhất để làm điều đó hay không, bởi vì với cookie bị vô hiệu hóa, xác thực sẽ không hoạt động. Hoặc cookie sẽ được lưu tạm thời trong WebView ngay cả khi chúng thực sự bị vô hiệu hóa? Quan điểm của tôi là đảm bảo xác thực sẽ hoạt động trên tất cả các thiết bị. –

Trả lời

7

Điều gì về việc sử dụng OAuth2?

  1. Xây dựng một máy chủ OAuth2 với https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth/,
  2. Đặt ứng dụng api máy chủ web của bạn như máy chủ tài nguyên, và cho phép oauth xác thực vô danh, trong đó sử dụng xác thực tiêu đề, không cookie.
  3. Sau khi nhận được access_token từ máy chủ oauth2, hãy đặt tiêu đề Xác thực cho yêu cầu ứng dụng khách của bạn.

bạn có thể kiểm tra mã ở đây:

https://github.com/beginor/owin-samples

+2

Tôi đã nghĩ rằng một giải pháp đơn giản và dễ dàng hơn sẽ khả dụng. Điều này có nghĩa là gần như sạch sẽ từ việc thực hiện mặt đất ... –

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