Tôi đã thực hiện rất nhiều nghiên cứu về chủ đề này và đã tự mình triển khai nhiều giải pháp.Cách tốt nhất để triển khai Đăng nhập một lần với tất cả các nhà cung cấp chính?
Bao gồm OpenID, Facebook Connect (sử dụng API Rest cũ và API đồ thị OAuth 2.0 mới), Đăng nhập bằng twitter (đã được nâng cấp lên OpenID đủ điều kiện hiện tại theo như tôi biết), v.v. ..
Nhưng những gì tôi vẫn còn thiếu là giải pháp hoàn hảo tất cả trong một.
Trong nghiên cứu của tôi, tôi loạng choạng về một số dự án thú vị:
- Janrain (formerly RPX) - a commercial solution
- Gigya - a free but externally hosted solution with javascript and rest apis
- AnyOpenID - a free solution for clients, commercial for websites
Nhưng tôi không muốn dựa vào một nhà cung cấp bên ngoài và tôi sẽ giống như giải pháp miễn phí, vì vậy tôi không bị giới hạn trong việc triển khai.
Tôi cũng đã thấy các nhà phát triển triển khai một dịch vụ sau một dịch vụ khác theo hướng dẫn của nhà cung cấp và thiết lập mô hình và bảng cơ sở dữ liệu cho mọi thứ.
Tất nhiên điều này sẽ làm việc nhưng nó là một shitload công việc và luôn cần sự phát triển và thay đổi trong ứng dụng của bạn, vv
Những gì tôi đang tìm kiếm là một lớp trừu tượng mà sẽ đưa tất cả các dịch vụ hiện có để một tiêu chuẩn có thể được tích hợp trong trang web của tôi. Khi một dịch vụ mới xuất hiện, tôi chỉ muốn thêm một mô hình thỏa thuận với sự trừu tượng của nhà cung cấp cụ thể đó để tôi có thể tích hợp liền mạch nó vào ứng dụng của tôi.
Hoặc tốt hơn, hãy tìm một giải pháp đã tồn tại mà tôi có thể tải xuống.
Lý tưởng nhất là dịch vụ trừu tượng này sẽ được lưu trữ độc lập từ ứng dụng của tôi để nó có thể được sử dụng cho một số ứng dụng và được nâng cấp độc lập.
Cuối cùng trong số 3 giải pháp ở trên có vẻ đầy hứa hẹn từ khái niệm. Mọi thứ chỉ được chuyển đến OpenID tổng hợp và trang web phải triển khai OpenID.
Sau một thời gian tôi tìm thấy Django socialauth, một hệ thống xác thực dựa trên python cho Webframework Django. Nhưng có vẻ như nó hoạt động như mô tả ở trên và tôi nghĩ rằng đây là cùng một hệ thống đăng nhập mà Stackoverflow sử dụng (hoặc ít nhất một số ngã ba sửa đổi ...).
Tôi đã tải xuống và cố gắng thiết lập và xem liệu nó có thể được thiết lập như một giải pháp độc lập hay không, nhưng tôi cũng không may mắn vì tôi cũng không phải như vậy.
Tôi rất thích một giải pháp dựa trên PHP.
Vì vậy, sau khi văn bản dài câu hỏi của tôi này chính là:
- Làm thế nào bạn sẽ thực hiện SSO, bất kỳ ý tưởng tốt hơn so với porting tất cả mọi thứ và có OpenID làm cơ sở?
- Ưu và nhược điểm của điều đó là gì?
- Bạn có biết bất kỳ giải pháp đã tồn tại nào không? Ưu tiên nguồn mở.
Tôi hy vọng câu hỏi này không quá chủ quan, cảm ơn trước.
Cập nhật: Tôi kết luận rằng xây dựng proxy/trình bao bọc hoặc những gì bạn có thể gọi cho Facebook, để chuyển nó sang OpenID để nó trở thành điểm cuối/nhà cung cấp OpenID sẽ là lựa chọn tốt nhất. Vì vậy, đó chính xác là những gì tôi đã làm.
Vui lòng xem câu trả lời của tôi bên dưới.
Tôi đã thêm tiền thưởng để nhận phản hồi/thảo luận về nó. Maby cách tiếp cận của tôi không phải là quá tốt như tôi hiện đang nghĩ rằng nó được!
tôi đã sửa đổi lớp của mình một chút và sửa một số lỗi! sẽ đặt nó trên github hoặc một cái gì đó khi nó được thực hiện, ủng hộ câu hỏi để có được bản cập nhật. –
Tôi không nghĩ câu hỏi này không đủ xây dựng để đóng. – markus
nevermind @ markus-tharkun, tôi cảm thấy như thực sự giúp đỡ nhau đã trở thành không quan trọng trên SO. nó giống như một chế độ với những định nghĩa riêng của nó về những gì và không tạo ra một câu hỏi hay và mong muốn săn lùng tất cả những người khác và làm nhục người hỏi để anh ta sẽ không bao giờ quay trở lại nữa. –