2017-02-14 36 views
6

Tôi đang cố tạo một hệ thống SSO đơn giản trong PHP cho hai tên miền được kết nối theo chủ đề.Mã thông báo JWT để xác thực tên miền chéo

Vì vậy, tôi đã tự hỏi liệu có thể lưu trữ mã thông báo JWT đã ký có chứa tên người dùng từ miền A vào bộ nhớ cục bộ hay không. Và sau đó để xác minh JWT bằng cách sử dụng cùng một khóa bí mật từ một tên miền B sẽ dẫn đến xác thực thành công.

Tôi đã tìm kiếm một số câu trả lời cho google và tôi đã tìm thấy một số câu trả lời có chứa miền xác thực trung gian, sẽ quản lý xác thực. Nhưng tôi chỉ muốn liên kết hai tên miền mà tôi có.

Cảm ơn.

Trả lời

2

giữa các gốc truy cập lưu trữ dữ liệu từ miền B vào miền A không được phép bởi same-origin policy

Tiếp cận dữ liệu được lưu trữ trong trình duyệt như localStorage và IndexedDB được ngăn cách bởi xuất xứ. Mỗi nguồn gốc có bộ nhớ riêng biệt và JavaScript ở một nguồn gốc không thể đọc hoặc ghi vào bộ nhớ thuộc nguồn gốc khác.

Giải pháp thông thường là phải có một miền trung tâm để xác thực (có thể là A hoặc B) và làm việc với chuyển hướng trong lĩnh vực gửi JWT hoặc s thỏ token xác thực trên các lĩnh vực bằng iframe. Xem chi tiết here

OpenID, OAuth và SAML giao thức làm việc với chuyển hướng, và ví dụ bộ trên web của Google có các ứng dụng của họ kết nối iframe máng (Ngoài ra google là một nhà cung cấp OpenID-connect)

+0

khung nội tuyến hoạt động tuyệt vời! Cảm ơn! – Ales

0

Không có lý do gì khiến bạn không thể thực hiện việc này. JWT thực sự không có gì đặc biệt, nó chỉ đơn giản là một mã thông báo giống như mã thông báo ID phiên. Sự khác biệt giữa JWT và bất kỳ mã thông báo nào khác là nó có thể chứa một tải trọng dữ liệu.

Những gì bạn mô tả về cơ bản là cấp mật khẩu của OAuth 2.0. Hệ thống SSO của bạn là máy chủ ủy quyền có thể xác thực người dùng và cung cấp cho họ mã thông báo truy cập. Mã thông báo truy cập có thể thực sự là một JWT trong trường hợp này. Sau đó, người dùng (tài nguyên) có thể sử dụng mã thông báo truy cập của họ để truy cập vào máy chủ tài nguyên (các miền khác của bạn), các máy chủ tài nguyên đó có thể xác minh rằng mã thông báo truy cập hợp lệ và cho phép hoặc từ chối yêu cầu.

Tôi sử dụng thư viện sau khi triển khai OAuth 2.0 bằng PHP: https://oauth2.thephpleague.com/ - cũng có một số thông tin tốt trong tài liệu.

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