2017-04-26 32 views
6

Tôi có nhiều ứng dụng web chạy trên nhiều tên miền. Tôi muốn triển khai Đăng nhập một lần để người dùng đăng nhập một lần để truy cập tất cả các ứng dụng.Làm cách nào để đăng nhập một lần bằng NodeJS?

Tôi nên triển khai tính năng này như thế nào? Tất cả các ứng dụng đều sử dụng chương trình phụ trợ của NodeJS.

Các con trỏ chung đi đúng hướng đều được chào đón.

Trả lời

9

Khi ứng dụng của bạn đang chạy trên các miền khác nhau, bạn không thể chia sẻ cookie giữa các APPS đang chạy trên máy khách để xác thực người dùng. Vì vậy, bằng cách nào đó thông tin cần phải được chia sẻ trên máy chủ kết thúc. Giải pháp đơn giản nhất mà tôi nghĩ đến là-

  1. Có phiên chia sẻ cho tất cả các máy chủ.

  2. Miền xác thực Hava cụ thể và người dùng chuyển hướng ở đó bất cứ khi nào cần xác thực. Xác thực người dùng ở đó và đặt cookie phiên hoặc mã thông báo bất cứ điều gì bạn muốn.

  3. Bất cứ khi nào bất kỳ ứng dụng nào của bạn cần xác thực, hãy chuyển hướng đến miền xác thực. Cookie xác thực sẽ được phân phối tới miền xác thực cũng như miền liên kết giới thiệu. Khi thấy rằng bạn đã được xác thực, máy chủ xác thực có thể chuyển hướng bạn đến ứng dụng gốc với sessionID thích hợp, sẽ được đặt làm cookie cho tên miền đó.

  4. Nếu không được xác thực, người dùng sẽ được yêu cầu xác thực trên máy chủ xác thực và sau đó chuyển hướng sẽ xảy ra.

  5. Với ít thay đổi, bạn có thể đạt được điều này bằng mã thông báo và không cần phiên chia sẻ.

Xác thực trạng thái đúng cách trước khi triển khai. Nhiều tiểu bang trong cơ chế của bạn có nghĩa là nhiều cơ hội của các lỗi và các cuộc tấn công có thể xảy ra.
Cân nhắc di chuyển các ứng dụng của bạn trên cùng một miền phụ. Nếu cơ chế xác thực giống nhau thì mọi người đều biết rằng tất cả các ứng dụng đều thuộc về cùng một công ty. Nó cũng sẽ dễ dàng hơn cho mọi người nhớ các miền phụ khác nhau trên cùng một tên miền thay vì ghi nhớ tất cả các miền khác nhau.

1

Dự án được sử dụng nhiều nhất là http://passportjs.org/ đó là khá nhiều người duy nhất tôi sử dụng, có kết nối tuyệt vời để giải quyết tiền đề như ADFS và bên thứ ba như google, facebook.

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