2015-10-11 22 views
5

Tôi mới sử dụng JWT và bình-jwt nên tôi chạy số example nơi tôi tìm thấy trong tài liệu. Tôi đọc số this để hiểu rõ hơn về JWT.flask-jwt Cách xử lý mã thông báo?

Nhưng bây giờ tôi tự hỏi làm thế nào tôi nên xử lý nhiều mã thông báo? Ý tôi là, người dùng đăng thông tin đăng nhập của mình lên "myserver/auth" và sau đó trả lại mã thông báo cho khách hàng. Khi khách hàng gửi yêu cầu mới, anh ta sẽ gửi mã thông báo.

Câu hỏi của tôi là cách tôi biết "mã thông báo" thuộc về người dùng nào và nơi "mã thông báo" được lưu trữ?

+0

Tôi cuối cùng đã tìm ra đây là một câu hỏi ngớ ngẩn. Tôi sẽ sớm trả lời nó. – Ricardo

+0

Tôi sẽ viết câu trả lời cuối tuần này. – Ricardo

Trả lời

2

JWTs bao gồm ba phần phân cách bằng dấu chấm, đó là (.):

  • Tiêu đề
  • Payload
  • Chữ ký

Do đó, một JWT thường trông giống như sau.

xxxxx.yyyyy.zzzzz 

Hãy xem một bản tóm tắt ngắn gọn theo RFCthis

Tiêu đề

Tiêu đề thường bao gồm hai phần: các loại thẻ bài, đó là JWT, và các thuật toán băm như HMAC SHA256 hoặc RSA.

{ 
    "alg": "HS256", 
    "typ": "JWT" 
} 

Payload

Phần thứ hai của token là tải trọng, trong đó có những tuyên bố. Tuyên bố là tuyên bố về một thực thể (thông thường, người dùng) và siêu dữ liệu bổ sung. Đây là phần thú vị vì bên trong mã thông báo chúng tôi có thể kiểm tra xem bạn thuộc về ai. { "userid": "1234567890", "expiration_date": "2016-05-129" }

Khi chúng ta tạo ra một thẻ mới, chúng tôi có thể xác định các dữ liệu tải trọng sẽ chứa vì vậy chúng tôi có thể thêm userid để xác định người dùng và hết hạn để kiểm tra xem đã đến lúc yêu cầu một người mới chưa.

Chữ ký

Để tạo phần chữ ký bạn phải lấy tiêu đề mã hóa, payload được mã hóa, một bí mật, các thuật toán được quy định trong tiêu đề, và ký tên vào đó. Chữ ký được sử dụng để xác minh rằng người gửi của JWT là người mà họ nói là và để đảm bảo rằng thông báo không được thay đổi theo cách này.

Server side

Chúng ta nên giữ khóa bí mật của chúng tôi ở phía máy chủ, do đó, chúng ta có thể giải mã một tải trọng hợp lệ và kiểm tra những người dùng thuộc. Bằng cách này, chúng tôi miễn phí để tránh các mã thông báo lưu trữ, bởi vì mọi kho lưu trữ mã thông báo đều có đủ dữ liệu để xác thực người dùng của chúng tôi.

Làm thế nào đổi mới token ?: từ phía khách hàng

Quá trình này để tạo ra một thẻ mới là như nhau, do phía khách hàng nên yêu cầu một dịch vụ mới (yêu cầu HTTP như www.myhost.com/renew) và gửi mã thông báo cũ để tạo mã mới. Hãy nhớ rằng bạn có thể kiểm tra người dùng nào thuộc mã thông báo đó do đó mã thông báo gia hạn phải chứa cùng một tải trọng nhưng có ngày hết hạn khác nhau.

Đăng nhập một lần

Chúng ta có thể sử dụng JWT với chiến lược giống như single sign-on để đảm bảo chỉ có một người sử dụng với cùng một thông tin được đăng nhập cùng lúc.

+3

Bạn có nghĩa là chỉ cần sao chép nguyên văn từ 'https: // jwt.io/introduction /' và không cung cấp cho tác giả gốc (s) tín dụng bằng cách liên kết lại. BOO cho hành vi trộm cắp tài sản trí tuệ. BOOOOOOO. –

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