Đăng nhập một lần trên các trang web


7

Tôi có ba trang web khác nhau mà tôi chạy trên ba tên miền cấp cao nhất. Tôi muốn có thể có người dùng đăng nhập vào bất kỳ một trong số họ và sau đó được tự động đăng nhập vào cả ba. Là một yêu cầu bổ sung, tôi muốn người dùng có thể sử dụng hệ thống đăng nhập của riêng tôi hoặc hệ thống bên thứ ba mà họ lựa chọn (ví dụ: Facebook).

Bất cứ ai có thể chỉ cho tôi để xóa tài liệu về một cách "tiêu chuẩn" để làm điều này? Tất cả mọi thứ tôi đã đọc đề nghị cố gắng viết giải pháp của riêng tôi sẽ là một ý tưởng tồi. SAML dường như là một hướng đi khả thi, vì vậy tôi đã thử chơi với SimpleSamlPhp , nhưng tôi không thể quấn lấy đầu mình (ví dụ tốt hơn những gì họ có trong tài liệu của họ có thể giúp ích).

Vì vậy, cách tốt nhất để thực hiện điều này là gì?


Bạn có sử dụng hệ thống quản lý nội dung trên các trang web này không? Vì nếu bạn làm, bạn sẽ có thể làm điều này mặc dù chia sẻ thông minh SQL và đăng nhập cookie đã lưu. Tương tự như cách Google đăng nhập bạn vào tất cả các trang web bằng cookie.
Simon Hayter

Chúng tôi chắc chắn có thể chia sẻ db của chúng tôi giữa các trang web, nhưng câu hỏi của tôi là cách thích hợp để làm những gì google làm khi bạn đăng nhập vào tất cả các dịch vụ của họ.
matthew

Tôi tưởng tượng sẽ có cách chia sẻ hồ sơ tên người dùng trong DB và sau đó đặt Cookies hoạt động trên 3 trang web, hãy xem một trong những cookie mà trang web của bạn sử dụng và xem bạn có thể điều chỉnh nó để nó hoạt động không trên 3 trang web. Đây không phải là lĩnh vực mạnh nhất của tôi nhưng điều này là có thể.
Simon Hayter

Hãy nghĩ rằng tôi đã tìm thấy những gì bạn đang tìm kiếm để kiểm tra câu trả lời của tôi trong thời gian 2 phút
Simon Hayter

Câu trả lời:


2

Tôi sẽ đề nghị sử dụng Open Id cho một lần đăng nhập. Nó được hỗ trợ rộng rãi nhất.

Người dùng có thể đăng nhập bằng tài khoản Google hoặc Yahoo của họ. Trang này có danh sách một số nhà cung cấp tài khoản lớn nhất cho id mở. Bạn cũng có thể tạo nhà cung cấp ID mở của riêng mình theo cách mà StackExchange thực hiện.

Có hai nhược điểm của nó:

  • Facebook không hỗ trợ nó. Nếu bạn cũng muốn cho phép người dùng đăng nhập thông qua facebook, bạn cũng cần phải thực hiện đăng nhập một lần vào facebook.
  • Bạn không thể tự động đăng nhập người dùng vào ba trang web của bạn. Người dùng của bạn sẽ phải phê duyệt từng trang web riêng biệt. Việc phê duyệt chỉ cần được thực hiện một lần trên mỗi trang web. Khi họ đã phê duyệt thông tin đăng nhập trên mỗi trang web, bạn có thể chuyển hướng họ đến trang đăng nhập và nó sẽ đưa họ trở lại với thông tin đăng nhập. Điều này giống như các trang web StackExchange hoạt động, nơi bạn có một lần đăng nhập, nhưng bạn phải phê duyệt từng trang web ngăn xếp riêng biệt.

Tôi giới hạn người dùng đăng nhập vào trang web của tôi chỉ sử dụng tài khoản Google của họ. Tôi đã phát hiện ra rằng người dùng ít bị tắt bởi để đăng nhập với Google hơn get tắt theo tình trạng tê liệt sự lựa chọn khi được trình bày bởi các tùy chọn. Có một liên kết đăng nhập duy nhất trên trang của mình rằng chỉ cần đưa họ đến Google làm chảy đăng nhập nhiều đơn giản hơn và dễ dàng hơn cho người dùng của tôi.


Hạn chế thứ hai của bạn là chính xác những gì tôi muốn tránh. Tôi có thể thấy người dùng của chúng tôi bị lẫn lộn / khó chịu ở bước thêm (mặc dù chỉ một lần).
matthew

Về mặt lý thuyết có thể tạo ra một nhà cung cấp id mở không yêu cầu bước xác nhận đó cho ba trang web cụ thể của bạn. Tôi đã không thể tìm thấy một với tính năng này mặc dù.
Stephen Ostermiller

2

Một cách khác để thiết lập SSO là sử dụng một cái gì đó như Dịch vụ xác thực trung tâm , ban đầu từ Yale.

Điều này có thể cho phép tự động đăng nhập vào một trang web mà không cần bước ủy quyền tại mỗi trang web; Người dùng của bạn sẽ đăng nhập vào máy chủ CAS một lần và được xác thực trên tất cả các trang web khi họ truy cập chúng.

Có các mô-đun được viết sẵn cho hầu hết các ngôn ngữ và một số hệ thống quản lý nội dung có thể sử dụng CAS cho SSO.


1

Một người bạn của tôi đã thành lập một công ty tên là CryptoKey , công ty đang thực hiện phương pháp tạo chứng chỉ bảo mật cá nhân cho người dùng có thể được cài đặt vào hầu hết các trình duyệt web. Tôi đã thử nghiệm nó và nó không yêu cầu bước xác nhận để cho phép một trang web xem và xác minh danh tính của bạn. Vì vậy, sau khi cài đặt xác thực, người dùng sẽ đăng nhập vào tất cả các trang web của bạn.

Hạn chế của hệ thống này là người dùng khó cài đặt chứng chỉ của họ hơn nhiều so với việc họ chỉ cần tạo mật khẩu.


0

Bạn sẽ có thể chia sẻ thông tin đăng nhập trên nhiều tên miền bằng cách:

  1. Chia sẻ cơ sở dữ liệu (Chỉ chi tiết người dùng)
  2. Chia sẻ cookie

Để thực hiện theo cách này, nó đòi hỏi rất nhiều mã hóa và rất nhiều biến để cung cấp cho bạn cách sử dụng chính xác mã này nhưng bạn có thể thực hiện một số nghiên cứu nhỏ về Chia sẻ cookie chéo nhiều tên miền được lưu trữ trên các máy chủ khác nhau . Thực tế có rất nhiều trang web với thông tin chi tiết làm thế nào có thể đạt được điều này có vẻ là tuyến đường tốt nhất của bạn nếu bạn muốn tránh xác nhận, v.v.


Sử dụng các tên miền phụ của cùng một tên miền gốc sẽ giúp việc này trở nên dễ dàng, nhưng than ôi yêu cầu của tôi bao gồm sử dụng các tên miền hoàn toàn riêng biệt.
matthew
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.