2013-01-13 80 views
52

Tôi được giao nhiệm vụ triển khai đăng nhập một lần cho khách hàng của chúng tôi như là một phần của bản phát hành tiếp theo. Lưu lượng tồn tại như sau:C# ASP.NET Đăng nhập một lần Thực hiện

  1. Người dùng đăng nhập vào hệ thống cổng chính của trường bằng cách sử dụng id/mật khẩu học sinh do trường cung cấp.
  2. Người dùng nhấp vào liên kết đến sản phẩm của công ty tôi.
  3. Người dùng được tự động đưa đến trang bảng điều khiển như thể họ vừa mới đăng nhập thông qua biểu mẫu đăng nhập trên trang web của chúng tôi.

Như vậy, có hai cơ chế mà nhờ đó người dùng có thể được chứng thực vào trang web của chúng tôi:

  1. Đến với trang chủ sản phẩm của chúng tôi, và đăng nhập bằng email/mật khẩu mà chúng tôi lưu trữ trong địa phương của chúng tôi hệ thống.
  2. Sử dụng đăng nhập một lần, nơi học sinh đã đăng nhập vào hệ thống chính của trường với id và mật khẩu học sinh.

Nếu triển khai sản phẩm của chúng tôi nằm trong ASP.NET (trái với Java/Ruby), chúng tôi có nên sử dụng CAS, JOSSO hoặc một số sản phẩm đăng nhập một lần của bên thứ ba khác không? Hoặc là có một cái gì đó có sẵn cho một môi trường NET mà sẽ được đơn giản cho chúng tôi như là một công ty NET ?.

+0

Nếu đó là cung cấp khởi xướng Nhận dạng mô hình, bài viết này có thể giúp: [IdP-khởi xướng các ứng dụng web asp.net] (http://www.componentpro.com/doc/saml/IdP-Initiated-Web-Applications .htm) – Peter

Trả lời

44

Có nhiều tùy chọn để triển khai SSO cho ứng dụng .NET.

Kiểm tra các hướng dẫn sau đây trực tuyến:

Khái niệm cơ bản của Single Sign trên, tháng 7 năm 2012

http://www.codeproject.com/Articles/429166/Basics-of-Single-Sign-on-SSO

GaryMcAllisterOnline: ASP.NET MVC 4, ADFS 2.0 và bên thứ 3 Tích hợp STS (IdentityServer2), Jan 2013

http://garymcallisteronline.blogspot.com/2013/01/aspnet-mvc-4-adfs-20-and-3rd-party-sts.html

Đầu tiên sử dụng ASP.NET Web Forms, trong khi thứ hai sử dụng ASP.NET MVC4.

Nếu yêu cầu của bạn cho phép bạn sử dụng giải pháp của bên thứ ba, hãy xem xét OpenID. Có một thư viện nguồn mở được gọi là DotNetOpenAuth.

Để biết thêm thông tin, hãy đọc bài đăng trên blog MSDN Integrate OpenAuth/OpenID with your existing ASP.NET application using Universal Providers.

Hy vọng điều này sẽ hữu ích!

+0

Cảm ơn sự giúp đỡ! Tôi tự hỏi, mặc dù không có sẵn các máy chủ đăng nhập một lần mà tôi có thể sử dụng để thực hiện việc này thay vì viết bản triển khai của riêng tôi? Giống như CAS của Yale hay gì đó? –

+0

Một tùy chọn khác để thực hiện SSO cho các ứng dụng ASP.NET & MVC là: http://www.componentpro.com/saml.net/ – Mubin

+2

Có lẽ tôi đang thiếu một cái gì đó, nhưng liên kết đầu tiên có vẻ khá vô dụng. Bạn chỉ có thể hack chuỗi truy vấn để bỏ qua xác thực? – JohnOpincar

7

Tôi muộn để đảng, nhưng đối với tùy chọn # 1, tôi sẽ đi với IdentityServer3 (NET 4.6 hoặc thấp hơn) hoặc IdentityServer4 (tương thích với Core).

Bạn có thể sử dụng lại cửa hàng người dùng hiện tại của mình trong ứng dụng và cắm vào đó để trở thành Cửa hàng người dùng của IdentityServer. Sau đó, khách hàng phải được trỏ đến IdentityServer của bạn như là nhà cung cấp id mở.

2

Có một số nhà cung cấp nhận dạng có hỗ trợ SSO ngoài hộp, cũng như các sản phẩm ** của bên thứ ba.

** Vấn đề duy nhất với sản phẩm của bên thứ ba là chúng tính phí cho mỗi người dùng/tháng và có thể khá tốn kém.

Một số trong những công cụ có sẵn và với các API cho .NET là:

Nếu bạn quyết định đi với bạn r thực hiện riêng, bạn có thể sử dụng các khung bên dưới được phân loại theo ngôn ngữ lập trình.

  • C#

    • IdentityServer3 (OAuth/OpenID giao thức, OWIN/Katana)
    • IdentityServer4 (/ giao thức OAuth OpenID, ASP.NET Lõi)
    • OAuth 2.0 Okta
  • Javascript

    • hộ chiếu-openidconnect (Node.js)
    • oidc-nhà cung cấp (Node.js)
    • openid-client (Node.js)
  • Python

    • pyoidc
    • Nhà cung cấp Django OIDC

tôi sẽ đi với IdentityServer4 và ứng dụng ASP.NET Core, thật dễ dàng cấu hình và bạn cũng có thể thêm nhà cung cấp chứng thực của riêng bạn. Nó sử dụng các giao thức OAuth/OpenID mới hơn SAML 2.0 và Liên kết WS.

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