Triển khai đăng nhập một lần C # ASP.NET


77

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

  1. Người dùng đăng nhập vào hệ thống cổng thông tin chính của trường họ bằng id / mật khẩu của sinh viên do trường cung cấp cho họ.
  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 tự động được đưa đến trang bảng điều khiển như thể họ vừa đăng nhập thông qua biểu mẫu đăng nhập trên trang web của chúng tôi.

Do đó, có hai cơ chế mà người dùng có thể được xác thực vào trang web của chúng tôi:

  1. Truy cập trang chủ của 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 hệ thống địa phương của chúng tôi.
  2. Sử dụng đăng nhập một lần mà học sinh đã đăng nhập vào hệ thống chính của trường bằng id và mật khẩu của học sinh.

Nếu việc triển khai sản phẩm của chúng tôi là ASP.NET (trái ngược 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 có thứ gì đó có sẵn cho môi trường .NET sẽ đơn giản hơn đối với chúng tôi với tư cách là một công ty .NET không?


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
Peter

Câu trả lời:


55

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 trực tuyến:

Khái niệm cơ bản về Đăng nhập một lần vào , 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à tích hợp STS của bên thứ 3 (IdentityServer2) , tháng 1 năm 2013

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

Cái đầu tiên sử dụng ASP.NET Web Forms, trong khi cái thứ hai sử dụng ASP.NET MVC4.

Nếu các 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 mã 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 Tích hợp OpenAuth / OpenID với ứng dụng ASP.NET hiện có của bạn bằng cách sử dụng Universal Providers .

Hi vọng điêu nay co ich!


1
Cảm ơn đã giúp đỡ! Tuy nhiên, tôi đang tự hỏi, không có máy chủ đăng nhập một lần nào đã tồn tại từ trước mà tôi có thể sử dụng để thực hiện việc này thay vì viết triển khai của riêng mình? Giống như CAS của Yale hay gì đó?
Adam Levitt

3
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

1
@JohnOpincar Đó cũng là suy nghĩ của tôi .. dường như tôi không an toàn lắm?
Tom Miller,

1
Tôi cũng đang nghĩ điều đó. Không thể nào, đó là cách SSO NÊN hoạt động!
dùng441521

1
Liên kết đầu tiên là khá thô. Đối với người mới bắt đầu, bất cứ nơi nào anh ấy nói "thời gian thực", hãy thay thế nó bằng "thế giới thực". Cuối cùng, ông ngụ ý rằng phép thuật "IsAuthenticatedBySSO" trong chuỗi truy vấn nên được thay thế bằng cách sử dụng mã thông báo SAML, mã này sẽ được mô tả trong một bài báo tiếp theo. Thật không may (?) Tài khoản của người dùng đã bị đóng vì anh ta "lạm dụng hoặc là một kẻ troll".
Nick Westgate

14

Tôi đến muộn với bữa tiệc, nhưng đối với tùy chọn số 1, tôi sẽ sử dụng IdentityServer3 (.NET 4.6 trở xuống) 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 có trong ứng dụng của mình và cắm nó trở thành Cửa hàng người dùng của IdentityServer. Sau đó, các khách hàng phải được trỏ đến IdentityServer của bạn làm nhà cung cấp id mở.


11

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

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

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

Nếu bạn quyết định tự triển khai, 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 (giao thức OAuth / OpenID, OWIN / Katana )
    • IdentityServer4 (giao thức OAuth / OpenID, ASP.NET Core )
    • OAuth 2.0 của Okta
  • Javascript

    • passport-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ẽ sử dụng ứng dụng IdentityServer4 và ASP.NET Core, nó có thể dễ dàng cấu hình và bạn cũng có thể thêm nhà cung cấp xác thực của riêng mình. Nó sử dụng các giao thức OAuth / OpenID mới hơn SAML 2.0 và WS-Federation.


3

UltimateSAML SSO là bộ công cụ .NET tuân thủ các đặc điểm kỹ thuật của OASIS SAML v1.x và v2.0. Nó cung cấp một cách thanh lịch và dễ dàng để thêm hỗ trợ SAML Đăng nhập Một lần và Đăng xuất Một lần vào các ứng dụng ASP.NET, ASP.NET MVC, ASP.NET Core, Máy tính để bàn và Dịch vụ của bạn. Thư viện nhẹ giúp bạn cung cấp quyền truy cập SSO vào các trang web trên đám mây và mạng nội bộ bằng một mục nhập thông tin xác thực duy nhất.

Bài đánh giá chi tiết về UltimateSAML SSO có thể được tìm thấy tại đây


1

[tuyên bố từ chối trách nhiệm: Tôi là một trong những người đóng góp]

Chúng tôi đã xây dựng một thành phần nguồn mở / miễn phí rất đơn giản bổ sung hỗ trợ SAML cho các ứng dụng ASP.NET https://github.com/jitbit/AspNetSaml

Về cơ bản, nó chỉ là một tệp C # ngắn mà bạn có thể ném vào dự án của mình (hoặc cài đặt qua Nuget) và sử dụng nó với ứng dụng của bạn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.