2015-12-16 16 views
6

Tôi có 2 ứng dụng (một .NET và các dịch vụ khác của Angular SPA (cùng với tên miền.) Tôi cần kích hoạt SSO cho 2 ứng dụng này. config có cùng một khóa máy và chúng được bật cho chế độ xác thực Mẫu.C# Forms Authentication .ASPXAUTH Cookie cho SSO

Tôi đăng nhập vào trang .NET. Tôi trình bày trang web góc trong iFrame. Khi mở khung nội tuyến, lệnh gọi API bao gồm cookie .ASPXAUTH tiêu đề yêu cầu nhưng HttpContext.User.Identity.Authenticated được đặt thành false. Vì vậy, nó trả về một 404 và chuyển hướng đến trang đăng nhập cho trang web góc trong iframe.

Cookie auth is HttpOnly nên góc không thể đọc Nhưng si nce cookie được đặt trong tiêu đề yêu cầu, phương thức API (.NET) nên xem xét nó như được xác thực và nó không phải là. Bất cứ điều gì tôi đang mất tích?

+0

bạn có sử dụng cùng một tên cookie xác thực cho cả hai ứng dụng không? – AMember

+0

yeah, của nó .ASPXAUTH – Dave

+1

Tôi sẽ bắt đầu với việc kiểm tra một cái gì đó như 'FormsAuthentication.Decrypt (HttpContext.Request.Cookies [FormsAuthentication.FormsCookieName] .Value)' trên yêu cầu API, để bạn có thể đảm bảo giá trị được truyền có thể được giải mã và chứa Mã định danh người dùng hợp lệ có thể được sử dụng bởi API – Lanorkin

Trả lời

2

Có một số thông tin không chắc chắn để trả lời câu hỏi này một cách chính xác, nhưng tôi nghĩ điều này có liên quan đến chính sách gốc. Bạn phải đặt rõ ràng nguồn gốc của iFrame để cookie của bạn không được nhận dạng dưới dạng yêu cầu trang web chéo. Và do đó sẽ không được áp dụng bởi ASP.net. Tiêu đề http gốc của bạn phải được đặt thành nguồn gốc hợp lệ và liên kết giới thiệu.

Vui lòng xem tại đây question. Nó giải thích ngắn gọn chính sách nguồn gốc.

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