Mã thông báo jwt python
Hướng dẫn này sử dụng cách tiếp cận thử nghiệm đầu tiên để triển khai xác thực dựa trên mã thông báo trong ứng dụng Flask bằng cách sử dụng Mã thông báo web JSON (JWT) Show
cập nhật
mục tiêuĐến cuối hướng dẫn này, bạn sẽ có thể…
Tiền thưởng miễn phí. Nhấp vào đây để truy cập vào video hướng dẫn Flask + Python miễn phí chỉ cho bạn cách xây dựng ứng dụng web Flask, từng bước một Loại bỏ các quảng cáoGiới thiệuMã thông báo web JSON (hoặc JWT) cung cấp phương tiện truyền thông tin từ máy khách đến máy chủ theo cách an toàn, không trạng thái Trên máy chủ, JWT được tạo bằng cách ký thông tin người dùng thông qua khóa bí mật, sau đó được lưu trữ an toàn trên máy khách. Hình thức xác thực này hoạt động tốt với các ứng dụng một trang hiện đại. Để biết thêm về điều này, cùng với những ưu và nhược điểm của việc sử dụng JWT so với. phiên và xác thực dựa trên cookie, vui lòng xem lại các bài viết sau
Bắt đầuĐủ lý thuyết, hãy bắt đầu thực hiện một số mã Thiết lập dự ánBắt đầu bằng cách nhân bản dự án soạn sẵn và sau đó tạo một nhánh mới
Tạo và kích hoạt virtualenv và cài đặt các phụ thuộc
Đây là tùy chọn, nhưng bạn nên tạo một kho lưu trữ Github mới và cập nhật điều khiển từ xa
Thiết lập cơ sở dữ liệuHãy thiết lập Postgres
Khi máy chủ Postgres cục bộ đang chạy, hãy tạo hai cơ sở dữ liệu mới từ 6 có cùng tên với tên dự án của bạn
Trước khi áp dụng di chuyển cơ sở dữ liệu, chúng tôi cần cập nhật tệp cấu hình có trong project/server/config. py. Chỉ cần cập nhật 7
Đặt các biến môi trường trong thiết bị đầu cuối
Cập nhật các bài kiểm tra sau trong project/tests/test__config. py
Chạy chúng để đảm bảo chúng vẫn vượt qua
Bạn nên thấy 0Loại bỏ các quảng cáodi cưThêm một mô hình. py vào thư mục “máy chủ” 1Trong đoạn mã trên, chúng tôi xác định mô hình người dùng cơ bản, sử dụng tiện ích mở rộng Flask-Bcrypt để băm mật khẩu Cài đặt psycopg2 để kết nối với Postgres 0Trong vòng quản lý. py thay đổi- 1Đến- 2Áp dụng di chuyển 3Kiểm tra sự tỉnh táoNó có hoạt động không? 4Cài đặt JWTQuy trình xác thực hoạt động như sau
Chu kỳ này lặp lại cho đến khi mã thông báo hết hạn hoặc bị thu hồi. Trong trường hợp sau, máy chủ phát hành mã thông báo mới Bản thân các mã thông báo được chia thành ba phần
Chúng tôi sẽ tìm hiểu sâu hơn một chút về tải trọng, nhưng nếu tò mò, bạn có thể đọc thêm về từng phần từ bài viết Giới thiệu về mã thông báo web JSON Để làm việc với Mã thông báo web JSON trong ứng dụng của chúng tôi, hãy cài đặt gói PyJWT 5Loại bỏ các quảng cáomã hóa mã thông báoThêm phương thức sau vào lớp 8 trong dự án/máy chủ/mô hình. py 6Đừng quên thêm nhập khẩu 7Vì vậy, được cung cấp id người dùng, phương thức này tạo và trả về mã thông báo từ tải trọng và khóa bí mật được đặt trong cấu hình. tập tin py. Tải trọng là nơi chúng tôi thêm siêu dữ liệu về mã thông báo và thông tin về người dùng. Thông tin này thường được gọi là Tuyên bố JWT. Chúng tôi sử dụng các "tuyên bố" sau đây
Khóa bí mật phải là ngẫu nhiên và chỉ phía máy chủ mới có thể truy cập được. Sử dụng trình thông dịch Python để tạo khóa >>> 8Đặt khóa làm biến môi trường 9Thêm khóa này vào 2 trong lớp 3 trong project/server/config. py 0Cập nhật các bài kiểm tra trong project/tests/test__config. py để đảm bảo biến được đặt chính xác 1Trước khi tiếp tục, hãy viết một bài kiểm tra đơn vị nhanh cho mô hình người dùng. Thêm mã sau vào tệp mới có tên test_user_model. py trong “dự án/thử nghiệm” 2Chạy thử nghiệm. Tất cả họ nên vượt qua Mã thông báo giải mãTương tự, để giải mã mã thông báo, hãy thêm phương thức sau vào lớp 8 3Chúng tôi cần giải mã mã thông báo xác thực với mọi yêu cầu API và xác minh chữ ký của nó để chắc chắn về tính xác thực của người dùng. Để xác minh 5, chúng tôi đã sử dụng cùng một 2 được sử dụng để mã hóa mã thông báoNếu 5 hợp lệ, chúng tôi sẽ lấy id người dùng từ chỉ mục 1 của tải trọng. Nếu không hợp lệ, có thể có hai trường hợp ngoại lệ
Thêm một bài kiểm tra vào test_user_model. py 4Đảm bảo vượt qua các bài kiểm tra trước khi tiếp tục Loại bỏ các quảng cáo Thiết lập tuyến đườngBây giờ chúng ta có thể định cấu hình các tuyến xác thực bằng cách sử dụng phương pháp thử nghiệm đầu tiên
Bắt đầu bằng cách tạo một thư mục mới có tên là “auth” trong “project/server”. Sau đó, trong “auth” thêm hai tệp, __init__. py và lượt xem. py. Cuối cùng, thêm đoạn mã sau vào chế độ xem. py 5Để đăng ký Bản thiết kế mới với ứng dụng, hãy thêm phần sau vào cuối dự án/máy chủ/__init__. py 6Bây giờ, thêm một tệp mới có tên test_auth. py trong “project/tests” để giữ tất cả các thử nghiệm của chúng tôi cho Bản thiết kế này 7Đăng ký lộ trìnhBắt đầu với một bài kiểm tra 8Đảm bảo thêm phần nhập 9Chạy thử nghiệm. Bạn sẽ thấy lỗi sau 0Bây giờ, hãy viết mã để vượt qua bài kiểm tra. Thêm phần sau vào dự án/máy chủ/auth/lượt xem. py 1Tại đây, chúng tôi đăng ký người dùng mới và tạo mã thông báo xác thực mới cho các yêu cầu tiếp theo mà chúng tôi gửi lại cho khách hàng Chạy các bài kiểm tra để đảm bảo tất cả chúng đều vượt qua 2Tiếp theo, hãy thêm một lần kiểm tra nữa để đảm bảo đăng ký không thành công nếu người dùng đã tồn tại 3Chạy lại các bài kiểm tra trước khi chuyển sang lộ trình tiếp theo. Tất cả nên vượt qua Loại bỏ các quảng cáoLộ trình đăng nhậpMột lần nữa, bắt đầu với một bài kiểm tra. Để xác minh API đăng nhập, hãy kiểm tra hai trường hợp
Người dùng đã đăng ký đăng nhập 4Trong trường hợp thử nghiệm này, người dùng đã đăng ký cố gắng đăng nhập và như mong đợi, ứng dụng của chúng tôi sẽ cho phép điều này Chạy thử nghiệm. Họ nên thất bại. Bây giờ hãy viết mã 5Đừng quên chuyển đổi lớp thành chức năng xem 6Chạy lại các bài kiểm tra. Họ có vượt qua không? . Đừng tiếp tục cho đến khi tất cả các bài kiểm tra vượt qua Người dùng chưa đăng ký đăng nhậpthêm bài kiểm tra 7Trong trường hợp này, một người dùng chưa đăng ký cố gắng đăng nhập và như mong đợi, ứng dụng của chúng ta sẽ không cho phép điều này Chạy thử nghiệm, sau đó cập nhật mã 8Chúng ta đã thay đổi những gì? Tuyến trạng thái người dùngĐể có được thông tin chi tiết về người dùng hiện đang đăng nhập, mã thông báo xác thực phải được gửi cùng với yêu cầu trong tiêu đề Bắt đầu với một bài kiểm tra 9bài kiểm tra sẽ thất bại. Bây giờ, trong lớp xử lý, chúng ta nên
0Vì vậy, nếu mã thông báo hợp lệ và chưa hết hạn, chúng tôi sẽ lấy id người dùng từ tải trọng của mã thông báo, sau đó được sử dụng để lấy dữ liệu người dùng từ cơ sở dữ liệu
Đảm bảo thêm 1Và 2Các bài kiểm tra nên vượt qua 3Một con đường nữa để đi Loại bỏ các quảng cáoKiểm tra lộ trình đăng xuấtKiểm tra đăng xuất hợp lệ 4Trong thử nghiệm đầu tiên này, chúng tôi đăng ký người dùng mới, đăng nhập họ, sau đó cố gắng đăng xuất họ trước khi mã thông báo hết hạn Kiểm tra đăng xuất không hợp lệ 5Giống như lần kiểm tra trước, chúng tôi đăng ký người dùng, đăng nhập và sau đó cố gắng đăng xuất họ. Trong trường hợp này, mã thông báo không hợp lệ vì đã hết hạn Thêm nhập khẩu 6Bây giờ, mã phải
Trước khi viết trình xử lý định tuyến, hãy tạo một mô hình mới cho các mã thông báo trong danh sách đen… Danh sách đenThêm mã sau vào dự án/máy chủ/mô hình. py 7Sau đó tạo và áp dụng di chuyển. Sau khi hoàn thành, cơ sở dữ liệu của bạn sẽ có các bảng sau 8Cùng với đó, chúng ta có thể thêm trình xử lý đăng xuất… Trình xử lý tuyến đường đăng xuấtCập nhật lượt xem 9Cập nhật hàng nhập 0Khi người dùng đăng xuất, mã thông báo không còn hiệu lực nên chúng tôi thêm nó vào danh sách đen
Chạy thử nghiệm 1Loại bỏ các quảng cáotái cấu trúcCuối cùng, chúng tôi cần đảm bảo rằng mã thông báo không bị đưa vào danh sách đen, ngay sau khi mã thông báo được giải mã - 06 - trong các tuyến trạng thái đăng xuất và người dùngĐầu tiên, hãy viết một bài kiểm tra cho lộ trình đăng xuất 2Trong thử nghiệm này, chúng tôi đưa mã thông báo vào danh sách cấm ngay trước khi lộ trình đăng xuất bị tấn công, điều này khiến mã thông báo hợp lệ của chúng tôi không sử dụng được Cập nhật hàng nhập 0Thử nghiệm sẽ thất bại với ngoại lệ sau 4Bây giờ hãy cập nhật chức năng 07 để xử lý các mã thông báo đã được đưa vào danh sách đen ngay sau khi giải mã và phản hồi bằng thông báo thích hợp 5Cuối cùng, thêm hàm 08 vào project/server/models. py trong lớp 09 6Trước khi bạn chạy thử nghiệm, hãy cập nhật 10 để chuyển đổi đối tượng byte thành chuỗi 7Chạy thử nghiệm 8Theo cách tương tự, thêm một bài kiểm tra nữa cho lộ trình trạng thái người dùng 9Tương tự như lần kiểm tra trước, chúng tôi đã đưa mã thông báo vào danh sách đen trước khi tuyến trạng thái người dùng bị tấn công Chạy thử nghiệm lần cuối 0Loại bỏ các quảng cáoMã MùiCuối cùng, hãy xem test_auth. py. Chú ý mã trùng lặp? 1Có tám lần xuất hiện của điều này. Để khắc phục, hãy thêm trình trợ giúp sau vào đầu tệp 2Bây giờ, bất cứ nơi nào bạn cần đăng ký người dùng, bạn có thể gọi người trợ giúp 3Làm thế nào về việc đăng nhập một người dùng? . Bạn có thể cấu trúc lại những gì khác? Cấu trúc lạiĐối với Thử thách PyBites, hãy cấu trúc lại một số mã để khắc phục sự cố được thêm vào repo GitHub. Bắt đầu bằng cách thêm bài kiểm tra sau vào test_auth. py 4Về cơ bản, sẽ xảy ra lỗi nếu tiêu đề 11 được định dạng không chính xác - e. g. , không có khoảng cách giữa 12 và giá trị mã thông báo. Chạy thử nghiệm để đảm bảo chúng không thành công, sau đó cập nhật lớp 13 trong project/server/auth/views. py 5Chạy thử nghiệm lần cuối Phần kết luậnTrong hướng dẫn này, chúng ta đã trải qua quá trình thêm xác thực vào ứng dụng Flask bằng JSON Web Tokens. Quay lại các mục tiêu từ phần đầu của hướng dẫn này. Bạn có thể đưa từng người vào hành động? Cái gì tiếp theo? . Kiểm tra Xác thực dựa trên mã thông báo với góc để thêm góc vào hỗn hợp Để xem cách xây dựng một ứng dụng web hoàn chỉnh từ đầu bằng Flask, hãy xem loạt video của chúng tôi Tiền thưởng miễn phí. Nhấp vào đây để truy cập vào video hướng dẫn Flask + Python miễn phí chỉ cho bạn cách xây dựng ứng dụng web Flask, từng bước một Vui lòng chia sẻ nhận xét, câu hỏi hoặc mẹo của bạn trong các nhận xét bên dưới. Mã đầy đủ có thể được tìm thấy trong kho lưu trữ jar-jwt-auth Chúc mừng Đánh dấu là đã hoàn thành 🐍 Thủ thuật Python 💌 Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python Gửi cho tôi thủ thuật Python » Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bậc thầy Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi Làm cách nào để tạo mã thông báo JWT bằng Python?Trước hết, hãy tạo một thư mục trong hệ thống của bạn cho dự án này và sau đó cài đặt FastAPI, uvicorn và python-jose để tạo và xác minh mã thông báo JWT trong Python. Use these commands to install these packages. After successful installation of these libraries, we can easily create out JWT and test it with FastAPI.
Làm cách nào để đọc mã thông báo JWT trong Python?Thư viện PyJWT có tùy chọn giải mã JWT mà không cần xác minh . Nếu không có tùy chọn này, chức năng giải mã không chỉ giải mã mã thông báo mà còn xác minh chữ ký và bạn sẽ phải cung cấp khóa phù hợp. Và đó tất nhiên là cách được đề xuất.
Mã thông báo JWT trong Python là gì?Mã thông báo Web JSON, hay gọi tắt là JWT, đều có trên web. Chúng có thể được sử dụng để theo dõi các bit thông tin về người dùng theo cách rất nhỏ gọn và có thể được sử dụng trong API cho mục đích ủy quyền . Bài đăng này sẽ đề cập đến Mã thông báo web JSON là gì và cách tạo JWT trong Python bằng thư viện JWT phổ biến nhất. PyJWT.
Làm cách nào để tạo mã thông báo bằng Python?Gọi phương thức generate_token() trả về một chuỗi. Chuỗi này là mã thông báo. Phương thức nhận các đối số sau. session_id (String) — ID phiên tương ứng với phiên mà người dùng sẽ kết nối. |