2011-06-23 30 views
14

Ví dụ:Sử dụng OpenID để đăng nhập vào nhiều tên miền: Kế hoạch này có khả thi không?

  • Chúng tôi đang chạy một hai trang web cộng đồng trên hai lĩnh vực (gọi cho họ example.comexample.net).
  • Chúng tôi muốn có thể mở rộng sang nhiều miền hơn sau đó.
  • Chúng tôi muốn cho phép nhiều loại thông tin đăng nhập (OpenID, Facebook, Twitter, tên người dùng/mật khẩu chuẩn).
  • Chúng tôi muốn người nào đó đăng nhập vào một trang web để tự động đăng nhập vào (các) trang khác.

Nói cách khác, nó hơi giống với mạng StackExchange.

Trong trường hợp này, kế hoạch này có hoạt động không?

  • Thiết lập example.comexample.net (và bất kỳ bổ sung sau) như bên dựa OpenID, mà chấp nhận OpenID đăng nhập từ chỉ id.example.org.
  • Thiết lập example.comexample.net để thực hiện yêu cầu trả lời ngay lập tức OpenID lần đầu tiên bạn truy cập chúng, để nếu bạn đăng nhập vào id.example.org, bạn sẽ được đăng nhập ngay lập tức và tự động vào trang web bạn đang truy cập. Họ nên thiết lập một cookie nếu bạn không đăng nhập, để lưu chúng làm điều này trên mọi yêu cầu trang.
  • Thiết lập id.example.org làm nhà cung cấp và người tiêu dùng OpenID. Nó cũng sẽ tiêu thụ Facebook và các nhà cung cấp nhận dạng khác và cho phép truy cập tên người dùng/mật khẩu chuẩn. (Có thể đính kèm nhiều phương thức đăng nhập vào một tài khoản.)
  • Khi đăng xuất, chỉ cần thay đổi mã thông báo xác thực trong cơ sở dữ liệu. Người dùng sẽ vẫn có cookie, nhưng chúng sẽ vô nghĩa. Vì vậy, người dùng có thể đăng xuất khỏi tất cả các trang cùng một lúc. Nhiều mã thông báo xác thực có thể được lưu trữ với một người dùng cùng một lúc (và phải khác nhau cho mỗi trang web), để người dùng có thể đăng xuất trong một trình duyệt nhưng vẫn đăng nhập vào một trình duyệt khác. Đăng xuất luôn luôn đăng xuất cho tất cả các trang web.

Vấn đề duy nhất mà tôi có thể nhìn thấy bằng ở trên là thế này:

  • Có người đến thăm example.com. Cookie "không đăng nhập" được đặt.
  • Zie sau đó đi vào example.net. Như trên.
  • Zie sau đó đăng nhập và tiếp tục duyệt trên example.net.
  • Zie sau đó quay ngược lại để example.com và, vì sự "không-đăng nhập" cookie, không kiểm tra đối id.example.org và do đó không đăng nhập.
  • Tuy nhiên, càng sớm càng zie nhấp chuột vào "Đăng nhập" button, zie được đăng nhập.

Tôi không nghĩ đây là vấn đề lớn.

Nhìn chung, tôi nghĩ đó là một hệ thống khá tốt. Tôi chỉ muốn xem nó xem xét lại. Có bất kỳ vấn đề tôi đã không dự kiến? Nó sẽ bị lỗi hoặc chậm? StackExchange sử dụng một phương pháp rất khác. Tôi cho rằng họ có lý do chính đáng cho điều đó?

+0

http://www.bbc.co.uk/dna/h2g2/F20154027?thread=8074058. – TRiG

Trả lời

1

Nhìn chung, thiết lập của bạn có vẻ ổn.Hy vọng bạn đã bao gồm việc xử lý hết hạn/hết thời gian của phiên.

Vấn đề duy nhất (và nó gây ra nhiều bất tiện) tôi thấy là cần phải nhấp vào 'Đăng nhập' một cách rõ ràng. Cá nhân, tôi thích đăng nhập tự động (như Google, MS và tấn các trang web lớn khác).

SO phát hiện nếu bạn đã đăng nhập hợp lệ và hiển thị thông báo yêu cầu làm mới trang. Trong khi hơi khó chịu, nó vẫn ít nhất cho tôi biết rằng tôi đã đăng nhập.

+0

Điều đó cần phải nhấp một cách rõ ràng sẽ chỉ xảy ra nếu bạn đã duyệt trang web đăng xuất, sau đó đăng nhập vào trang web khác. Tôi nghĩ đó sẽ là một trường hợp hiếm hoi mà tôi không cần phải bận tâm. Tôi hi vọng. Cách StackExchange hiện nó là khá kỳ quặc, nhưng dường như làm việc. – TRiG

+0

Bạn đã từng làm việc về điều này chưa? Tôi đang tìm cách làm một cái gì đó tương tự. Sử dụng Devise dựa trên viên ngọc oa-omniauth. –

+0

@rajatbanerjee. Nó đã kết thúc không xảy ra, nhưng tôi có thể thực sự làm một số công việc trên nó anyway vì lợi ích của nó. Sẽ rất thú vị đây. – TRiG

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