14

Tôi có ứng dụng Asp.Net đã được xây dựng đang sử dụng nhà cung cấp thành viên Asp.Net.Cách tiếp cận tốt nhất cho SSO cho ứng dụng Asp.Net với Đăng nhập từ ứng dụng bên ngoài với nhiều ADFS

Có ứng dụng web ứng dụng khách có thông tin đăng nhập riêng. Sau khi đăng nhập, người dùng sẽ nhận được một số liên kết. Các liên kết này được chuyển đến ứng dụng tôi đã phát triển. Hiện tại vì đây là hai ứng dụng khác nhau được lưu trữ trong hai tên miền, cần có hai lần đăng nhập.

Điều tôi đang cố đạt được là có SSO và không phải đăng nhập khi người dùng đã đăng nhập vào ứng dụng khách. Tôi đã đọc qua và dường như có thể thực hiện điều này thông qua một nhà cung cấp STS như ThinkTecture IdentityServer và sử dụng ADFS ở cuối của chúng tôi.

Đây có phải là cách tiếp cận tốt nhất và nếu có, tôi không thể tìm thấy nhiều tài liệu liên quan đến các bản cập nhật tôi cần hỏi từ nhóm ứng dụng chính để kích hoạt SSO.

+0

Bạn có đang sử dụng Xác thực biểu mẫu không? Bạn đang sử dụng Identity? Để làm rõ, bạn nói ứng dụng khách thực hiện đăng nhập ... Tôi cho rằng bạn có ý nghĩa giống như một trình duyệt hoặc ứng dụng dành cho thiết bị di động? Điều đó có nghĩa là khách hàng gửi thông tin đăng nhập tới máy chủ và được xác thực hay bạn có nghĩa là một dịch vụ mà quy trình máy chủ mà bạn sử dụng để xác thực? –

+0

Bạn có quyền kiểm soát (nguồn) nào? ứng dụng web? ứng dụng khách? cả hai? Bạn có thể chuyển "thứ gì đó" cho ứng dụng khách cho ứng dụng web để ứng dụng web có thể xác thực từ ứng dụng đó không? –

+0

Ok, để rõ ràng hơn, Có một trang web www.MainWebApp.com được lưu trữ bởi Bên A. Trang web này có thông tin đăng nhập đang thực hiện xác thực đối với DB được tổ chức bởi Bên A. Sau khi đăng nhập, họ nhận được một trang có liên kết trỏ đến www.mywebapp.com/home/index đây là trang web mà chúng tôi đang lưu trữ ở phần cuối của chúng tôi với DB cũng được lưu trữ ở cuối của chúng tôi. Hiện tại, liên kết này sẽ hiển thị trang Đăng nhập mà tôi muốn xóa và cho bên A gửi một số thông tin cùng với liên kết để được ủy quyền. – Chinjoo

Trả lời

7

Điều đó có thể xảy ra với Nhà cung cấp STS hoặc ADFS. Điều tôi đề nghị là chỉ có một ứng dụng web để xác thực trong đó khi người dùng nhấp vào đăng nhập trên trang web chính, bạn có thể chuyển hướng đến ứng dụng xác thực, xác thực và tạo mã thông báo rồi chuyển hướng trở lại ứng dụng chính cùng với mã thông báo. Sau đó, bạn có thể gọi bất kỳ ứng dụng nào cùng với mã thông báo này và kiểm tra xem người dùng có quyền truy cập vào ứng dụng này hay không. Mã thông báo chứa thông tin như người dùng đã được xác thực, quyền, v.v. Tôi cho rằng bạn cần tạo mô-đun http tùy chỉnh để thực hiện việc này.

Nếu tất cả các ứng dụng đều thuộc một miền, cookie có thể đạt được.

+0

Khái niệm ở đây là ứng dụng chính không được chúng tôi duy trì và do đó, nó phải có sự thay đổi tối thiểu trong đó và trên miền khác. – Chinjoo

1

Tôi tin rằng cách dễ nhất là sử dụng Azure Active Directory để thực hiện điều đó. Dưới đây là một vài bài viết/thông tin về điều đó:

http://www.dotnetcurry.com/windows-azure/1123/secure-aspnet-mvc-azure-using-active-directory-signon

http://azure.microsoft.com/en-us/documentation/videos/overview-of-single-sign-on/

+0

Đăng nhập ban đầu không được thực hiện bởi hệ thống của chúng tôi. Do đó chúng tôi không có quyền kiểm soát công ty phát hành thẻ. – Chinjoo

0

Tôi tin rằng cách tiếp cận tốt nhất là để lưu trữ một nhà cung cấp nhận dạng như ADFS hoặc ThinkTecture ở một nơi khác và sau đó làm cho cả hai ứng dụng chính và bạn ứng dụng một bên phụ thuộc của Nhà cung cấp danh tính này.

Cả hai ứng dụng sẽ cần phải được thay đổi để hỗ trợ giao thức WS-Federation (asp.net đã có một mô-đun HTTP để hỗ trợ nó).

Có một chi này https://msdn.microsoft.com/en-gb/library/bb498017.aspx

Sau đó cũng kiểm tra blog này http://chris.59north.com/post/Configuring-an-ASPNET-site-to-use-WS-Federation

+0

Bạn có bất kỳ tài liệu tham khảo cho các mẫu để kiểm tra này ra? – Chinjoo

+0

Microsoft có hướng dẫn tại đây: https://msdn.microsoft.com/en-us/library/hh291061.aspx. Chỉ cần lặp lại các bước hai lần để bạn có hai trang web và đặt một liên kết trên một trong các trang này đến một trang khác. – DanL

0

Làm thế nào về bắt chước các khái niệm SSO?

  • Khi nhấp vào liên kết được cung cấp trong trang web của bên A, hãy tạo mã thông báo bằng Dấu thời gian.
  • Tải lên nó trong DB của bạn thông qua dịch vụ
  • Encrypt token sử dụng RSA với tham số bổ sung cả thoả thuận
  • Redirect URL của bạn với thông số mã hóa này chuyển đổi sang base64
  • Decrypt về phía bạn và kiểm tra các dấu hiệu trong trang web của bạn và sau đó cho phép trang web của bạn.
  • Viết logic cho mã thông báo không còn tồn tại trong một thời gian cụ thể.
Các vấn đề liên quan