2016-11-10 36 views
6

Tôi đã đọc một số bài viết về sso nhưng không thể tìm thấy câu trả lời trong đầu. Tôi có một kịch bản như dưới đây:Đăng nhập một lần (SSO) bằng JWT

Kịch bản:

  • Công ty của tôi muốn có sso cơ chế sử dụng JWT.
  • Công ty có 2 lĩnh vực khác nhau như abc.com như abcxyz.com như xyz.
  • Ngoài ra còn có masterdomain quản lý xác thực ứng dụng khách.
  • Người dùng X muốn đăng nhập abc lúc đầu.
  • abc gửi các ủy nhiệm để masterdomainmasterdomain xác thực người dùng sau đó tạo ra một JWT đăng nhập để gửi trở lại abc.
  • abc giữ jwt này trong cookie.
  • Sau một thời gian nếu đăng nhập vào abc được thử trên cùng một máy tính, hệ thống không yêu cầu bằng chứng xác thực và tự động đăng nhập người dùng.

Câu hỏi:

Nếu người dùng cố gắng để mở một trang trong xyz miền, làm thế nào để hệ thống hiểu rằng loggedin người dùng trước khi? Ý của tôi là xyz tên miền không thể truy cập cookie của abc trong đó có jwt. Thông tin nào sẽ được gửi đến xyz cho biết người dùng X đang cố đăng nhập?

Cảm ơn trước

Trả lời

3

Bạn có thể lưu trữ các chứng thực thẻ JWT trong một cookie/localStorage của một miền trung gian kết nối với trang chủ sử dụng iframe

cross domain sso

Kịch bản

  • abc gửi thông tin đăng nhập tới masterdomainmasterdomain xác thực người dùng rồi tạo một jwt đã ký để gửi lại abc.

  • abcmasterdomain giữ jwt này trong cookie.

  • Sau một thời gian nếu đăng nhập abc được thử trên cùng một máy tính, hệ thống không yêu cầu bằng chứng xác thực và tự động đăng nhập người dùng.

Cuối cùng khi người dùng nhập vào lĩnh vực thứ hai xyz, JWT được thu hồi từ masterdomain lưu trữ bằng cách sử dụng iframe, và tự động đăng nhập người dùng

CORS không phải là một vấn đề vì masterdomain.com có quyền truy cập để lưu trữ và giao tiếp giữa các iframe của nó được cho phép nếu nguồn gốc và đích được công nhận (xem http://blog.teamtreehouse.com/cross-domain-messaging-with-postmessage)

Để đơn giản hóa phát triển, chúng tôi đã phát hành gần đây một dự án mã nguồn mở chéo miền SSO với JWT tại https://github.com/Aralink/ssojwt

+0

những gì về sự an toàn nếu có một trang web lừa đảo mà người dùng nhập và người dùng sẽ mất thẻ truy cập? không ** ssojwt ** corver trường hợp này? – Vunb

+1

@Vunb, iframe 'chức năng postmessage' đòi hỏi rằng các trang web có nguồn gốc và đích phải được ủy quyền trước đây, nếu không thì trình duyệt sẽ không cho phép nhắn tin, do đó, một kẻ tấn công không thể truy cập token chia sẻ bởi vì nó không nằm trong danh sách trắng – pedrofb

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