2013-06-29 20 views
6

Chúng tôi đang chạy một ứng dụng web (máy chủ sáng bóng, nơi mã hóa được thực hiện trong R) và muốn thêm lớp xác thực vào đó. Thay vì xây dựng một cái gì đó để làm điều này trong R, tôi nghĩ đến việc sử dụng thiên thạch để tạo ra các thẻ xác thực và tất cả những điều đó. Đây là cách tôi đã nghĩ đến việc làm việc đó:mã thông báo xác thực, lưu trữ cục bộ và sao băng

  • Một người dùng đăng nhập với thiên thạch và sao băng tạo ra một mục cơ sở dữ liệu mà trông giống như sau:
 
    { "createdAt" : 1372521823708, 
     "_id" : "HSdbPBuYy5wW6FBPL", 
     "services" : { "password" : { "srp" : { "identity" : "vKpxEzXboBaQsWYyJ", 
      "salt" : "KRt5HrziG6RDnWN8o", 
      "verifier" : "8d4b6a5edd21ce710bd08c6affb6fec29a664fbf1f42823d5cb8cbd272cb9b2b3d5faa681948bc955353890f645b940ecdcc9376e88bc3dae77042d14901b5d22abd00d37a2022c32d925bbf839f65e4eb3a006354b918d5c8eadd2216cc2dbe0ce12e0ad90a383636a1327a91db72cf96cd4e672f68544eaea9591f6ed102e1" } }, 
     "resume" : { "loginTokens" : [ 
      { "token" : "t9Dxkp4ANsYKuAQav", 
       "when" : 1372521823708 } ] } }, 
     "emails" : [ 
     { "address" : "[email protected]", 
      "verified" : false } ] } 
  • Người dùng là chuyển hướng đến "ứng dụng cũ". Ở đây chúng ta kiểm tra bộ nhớ cục bộ (nên là lưu trữ địa phương giống như sao băng nếu chúng ta sử dụng cùng một máy chủ bên ngoài phải đối mặt và cổng, có đúng không?) và tìm thông tin này:
 
    Meteor.loginToken: t9Dxkp4ANsYKuAQav 
    Meteor.userId: HSdbPBuYy5wW6FBPL 
  • Các dữ liệu lưu trữ địa phương là được điều tra bởi "ứng dụng khác" và nó thực hiện một truy vấn cơ sở dữ liệu đơn giản đối với db sao băng để xác minh rằng thông tin lưu trữ cục bộ khớp với những gì có trong cơ sở dữ liệu. Có lẽ cũng kiểm tra một số loại ngày hết hạn. Nếu điều này phù hợp, ứng dụng sẽ hiển thị, nếu không thì sẽ không.

Đây có phải là cách an toàn để làm điều đó không? Nó có hoạt động để chia sẻ lưu trữ cục bộ giữa các ứng dụng không?

+2

Đó dường như là một cách tiếp cận hợp lý, nhưng bạn sẽ cần phải xem ra cho những hạn chế miền và đường dẫn trên cookie của bạn: http: //en.wikipedia. org/wiki/HTTP_cookie # Domain_and_Path. –

+0

Đây chính là cách tôi đã tiếp cận điều này khi làm việc với Meteor và phần mở rộng của trình duyệt. –

+0

Có thể liên quan đến câu hỏi này là gói shinyStore cho phép bạn sử dụng (tùy chọn được mã hóa) lưu trữ cục bộ từ Shiny: https://github.com/trestletech/shinyStore –

Trả lời

0

Tất nhiên bạn sẽ phải đảm bảo rằng WebSockets của bạn đang chạy trên TLS. LocalStorage sử dụng đơn giản Same-origin Policy. Vì vậy, có nó sẽ làm việc. LocalStorage an toàn như một cookie nên không sao.

TLDR:

Có và Có

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