2013-09-25 58 views
8

Tôi đang viết một ứng dụng khá lớn, với giao diện HTML/CSS/JS, sử dụng AngularJS và API ASP.NET MVC Web làm phụ trợ.Để ứng dụng HTML/CSS/JS thuần túy yêu cầu người dùng nhập tên người dùng/mật khẩu của mình và chuyển nó cho ADFS?

Tôi muốn người dùng có thể xác thực, tôi đã cài đặt ThinkTecture AuthorizationServer trên một máy riêng biệt và có một cá thể ADFS chạy trên Domain Controller. Hiện tại, tôi đang sử dụng trang web được cung cấp với ADFS để đăng nhập, nhưng sẽ rất tuyệt nếu tôi có thể sử dụng trang của riêng mình, yêu cầu tên người dùng/mật khẩu kết hợp, chuyển nó đến AuthorizationServer/ADFS, và sau đó chỉ cần sử dụng mã xác thực sau đó.

Có ai đã làm điều gì đó tương tự không?

Kính trọng, Daniel

+0

Bạn có giải pháp nào cho vấn đề của mình không? Vui lòng chia sẻ giải pháp của bạn khi tôi cần giải quyết vấn đề tương tự. –

+0

Tôi đã làm như sau: - thêm điểm cuối/đăng nhập vào API của tôi, người dùng có thể POST tới (trên SSL, vì vậy tên người dùng/mật khẩu không được gửi trong bản rõ) - Sử dụng thư viện Thinktecture.IdentityModel trong API của tôi dự án để kết nối với AuthorizationServer (sử dụng Luồng mã). Mã này trông như thế này: ' \t var client = new OAuth2Client ( \t \t mới Uri (endpoint), \t \t ClientId, bí mật); \t Đăng nhập Phản hồi phản hồi = null; \t Mã thông báo AccessTokenResponseResponse = null; \t thử \t { \t \t tokenResponse = client.RequestAccessTokenUserName (data.user, data.pass, "đọc"); \t} \t catch (Exception ex) \t { \t \t \t} ' Nó hoạt động ... – dabs

+0

Xin lỗi về định dạng, nó có một chút ra khỏi tầm tay ... – dabs

Trả lời

3

Trong thực tế, bạn dùng sẽ được đăng nhập SPA của bạn sau đó bạn có một phía máy chủ (Java hoặc .NET hoặc *) mà có được yêu cầu này.

Máy chủ yêu cầu mã thông báo cho ADFS, ADFS gửi mã thông báo và máy chủ của bạn chuyển mã thông báo tới AngularJS trong phản hồi qua cookie.

Trong gì bên góc phải làm mong đợi một đánh chặn http để kiểm tra tình trạng của phản ứng (401.403) ...

Cookie sẽ được bực bội tự động bởi AngularJS trong từng yêu cầu nếu bạn muốn biết làm thế nào thực hiện một htppInterceptor trên AngularJS chỉ cần kiểm tra:

AngularJs -.net MVC WebApi Authentication example

Trong chủ đề này tôi giải thích làm thế nào để thực hiện bước này.

Dù sao: SPA của bạn là một RIA ok nhưng vẫn là phần khách hàng của webapp. Tôi không nghĩ rằng nó thực sự tốt (tôi nghĩ rằng nó thực sự xấu) để cho một phần khách hàng liên hệ trực tiếp với ADFS ... Làm thế nào để ngăn chặn Man-In-The-Trung nếu bạn làm điều đó?

+0

Âm thanh thú vị. Dự án API Web có thể xử lý yêu cầu đăng nhập không? – dabs

+0

Đối với tôi nó không thực sự là tiêu chuẩn nhưng trang đăng nhập là một trang MVC cổ điển sau đó khi bạn đăng nhập u lại trong SPA! –

+0

Dù sao tôi có thể đặt một ví dụ với thông tin đăng nhập trên SPA nếu bạn muốn –