Làm cách nào để xác minh mã thông báo mang của tôi?
Khi bạn gọi proxy API trên Apigee Edge có bảo mật OAuth, Edge chịu trách nhiệm xác minh mã thông báo truy cập. Hãy coi Edge là người gác cổng -- không lệnh gọi API nào có thể đi qua mà không có mã thông báo truy cập có thể được xác minh Show
Thêm chính sách VerifyAccessTokenĐể định cấu hình xác minh mã thông báo, hãy đặt chính sách OAuthV2 với thao tác VerifyAccessToken ngay từ đầu luồng proxy API (phần đầu của luồng trước ProxyEndpoint). Nếu được đặt ở đó, mã thông báo truy cập sẽ được xác minh trước khi bất kỳ quá trình xử lý nào khác diễn ra và nếu mã thông báo bị từ chối, Edge sẽ dừng xử lý và trả lại lỗi cho máy khách
Chính sách mặc định đã được định cấu hình với thao tác VerifyAccessToken, vì vậy bạn không phải làm gì thêm Lưu ý. Theo mặc định, VerifyAccessToken mong muốn mã thông báo truy cập được gửi trong tiêu đề Ủy quyền dưới dạng mã thông báo Bearer. Ví dụ. -H "Authorization: Bearer Rft3dqrs56Blirls56a" Bạn có thể thay đổi giá trị mặc định này trong phần tử -H "Authorization: Bearer Rft3dqrs56Blirls56a"5 trong chính sách OAuthV2, như được giải thích trong tài liệu chính sách OAuthV2 Trong một thế giới ngày càng nguy hiểm, nơi các vụ hack và vi phạm ngày càng trở nên phổ biến, các nhà phát triển phải nắm vững các tính năng bảo mật có sẵn. Đối với hầu hết các dịch vụ ứng dụng đưa dữ liệu lên web, thông thường sẽ có cơ chế xác thực bảo vệ tài nguyên. Tuy nhiên, mặc dù có rất nhiều cơ chế bảo mật mạnh mẽ và tinh vi, nhiều cơ chế vẫn bị định cấu hình sai, không đầy đủ hoặc thậm chí đôi khi không có. Trong bài viết này, chúng ta sẽ thảo luận về một trong những cơ chế phổ biến nhất và đã được thử nghiệm để bảo mật thông tin liên lạc giữa người dùng và dịch vụ của bạn. mã thông báo truy cập và xác thực mã thông báo Đầu tiên, chúng tôi sẽ giải thích mã thông báo truy cập là gì và xác thực mã thông báo là gì. Sau đó, chúng tôi sẽ giải thích khi xác thực mã thông báo là cách hành động tốt nhất và khi nào thì không. Tiếp theo, chúng tôi sẽ hướng dẫn bạn quy trình thiết lập cơ chế xác thực mã thông báo đơn giản trên ứng dụng NodeJS. Cuối cùng, chúng ta sẽ khám phá tiêu chuẩn JSON Web Token (JWT) để biết cơ chế xác thực an toàn hơn và hướng dẫn bạn cách triển khai cơ chế đó Mã thông báo truy cập là gì?Mã thông báo truy cập là các khóa dùng làm cơ sở để xác nhận tính xác thực của người dùng hoặc các đặc quyền của họ trong một ứng dụng. Nói một cách đơn giản hơn, mã thông báo truy cập là một chuỗi dữ liệu, thường được mã hóa theo một cách nào đó, chứa thông tin về danh tính của người dùng. Thông tin này, mặc dù được mã hóa, không được bao gồm thông tin xác thực nhạy cảm
Mục đích của mã thông báo truy cập không nhất thiết là để xác thực người dùng theo yêu cầu mà để dùng làm bằng chứng xác thực trước đó. Đó là lý do tại sao mã thông báo truy cập có thời hạn hết hạn kèm theo và được yêu cầu làm mới bằng cách xác thực lại người dùng hoặc bất kỳ cơ chế nào khác. Ngoài ra, mã thông báo truy cập là cơ chế được ưu tiên để bảo mật thông tin liên lạc giữa người dùng và API cung cấp dữ liệu dựa trên vai trò hoặc đặc quyền của người dùng Vì bạn có thể liên kết mã thông báo với dữ liệu người dùng nên việc sử dụng cơ chế này sẽ thuận tiện để giảm chi phí giao dịch cơ sở dữ liệu mà API cần để xử lý yêu cầu Một ví dụ đơn giản về mã thông báo truy cập sẽ là một UUID hoặc số nhận dạng duy nhất chung mà bạn có thể liên kết với sổ đăng ký người dùng trong cơ sở dữ liệu và có ngày hết hạn được liên kết với nó Xác thực mã thông báo là gì?Xác thực mã thông báo là cơ chế mà API xác thực tính xác thực và tuổi thọ của mã thông báo truy cập. Cơ chế xác thực mã thông báo khác nhau giữa các ứng dụng, nhưng phần lớn, cơ chế này bao gồm giải mã tải trọng, phân tích cú pháp các thuộc tính và thực hiện thêm các truy vấn để xác thực thông tin xác thực. Xác thực này, trong một dịch vụ API tiêu chuẩn, sẽ xảy ra trước khi bất kỳ yêu cầu nào đến điểm cuối. Ngoài ra, yêu cầu này sẽ phát sinh một số cơ chế lọc để ngăn truy cập vào các tài nguyên nhạy cảm và chi phí không cần thiết Sau khi máy chủ nhận được mã thông báo và lọc yêu cầu một cách thích hợp, API có thể xác nhận loại đặc quyền mà yêu cầu có đối với điểm cuối. Để làm điều này, một số API sử dụng thông tin phạm vi có trong mã thông báo. Hơn nữa, máy chủ sau đó trả lại mã thông báo cho người dùng trên mỗi phản hồi để duy trì quyền truy cập vào API. Máy chủ có thể thay đổi mã thông báo này trên mỗi phản hồi, tùy thuộc vào nhu cầu bảo mật của dịch vụ Khi nào bạn cần xác thực mã thông báo?Bạn nên triển khai xác thực mã thông báo bất cứ khi nào bạn tiết lộ dữ liệu nhạy cảm cho người dùng. Ngoài việc đảm bảo rằng người dùng được xác thực, việc triển khai các cơ chế bảo mật phù hợp như JWT và xác thực mã thông báo nói chung là bắt buộc để ngăn chặn các tác nhân xấu khai thác người dùng của bạn. Ngoài ra, việc có một lớp xác thực mạnh mẽ và đáng tin cậy có thể ngăn chặn việc khai thác tính khả dụng và ổn định của dịch vụ của bạn
Nếu bạn có API trả về thông tin cho khách hàng và thông tin đó có khả năng nhạy cảm, thì bạn phải cân nhắc cẩn thận việc xây dựng cơ chế để đảm bảo rằng chỉ những người phù hợp mới có quyền truy cập vào thông tin đó. Ngược lại, nếu API của bạn hoặc điểm cuối trong đó chỉ trả về thông tin có sẵn công khai và không có giá trị tiềm năng để khai thác, thì bạn không nên thêm cơ chế xác thực mã thông báo. Điều này là do nó sẽ gây thêm căng thẳng cho máy chủ của bạn mà không có mục đích thực sự. Ngoài ra, việc thêm các bước bổ sung để người dùng truy cập dịch vụ của bạn có thể gây hại cho doanh nghiệp của bạn JWT là gì?Theo trang web JWT, "JSON Web Token (JWT) là một tiêu chuẩn mở (RFC 7519) xác định một cách nhỏ gọn và khép kín để truyền thông tin an toàn giữa các bên dưới dạng đối tượng JSON. Thông tin này có thể được xác minh và tin cậy vì máy chủ đã ký điện tử vào thông tin đó. JWT có thể được ký bằng bí mật (với thuật toán HMAC) hoặc cặp khóa công khai/riêng tư bằng cách sử dụng RSA hoặc ECDSA. " Điều này có nghĩa là JWT là tiêu chuẩn mã thông báo bảo mật được sử dụng để xác thực và nâng cao giao dịch giữa dịch vụ và khách hàng. Mã thông báo này chứa thông tin JSON có thể được ánh xạ vào một đối tượng chứa dữ liệu để duy trì cơ chế ủy quyền giữa các thực thể và giảm nhu cầu giao dịch cơ sở dữ liệu đắt tiền Được rồi, bây giờ chúng ta đã khám phá lý thuyết, đã đến lúc viết mã một ví dụ thực tế về xác thực mã thông báo. Đối với điều này, chúng tôi sẽ sử dụng Node. js, Express và npm để xây dựng một máy chủ barebones chấp nhận các lần thử đăng nhập, tạo mã thông báo JWT và lọc các yêu cầu xác thực. Chúng ta hãy đi đến đó Thiết lập xác thực mã thông báoĐầu tiên, tạo một tệp JavaScript mới và gọi nó là "index. js. " Bạn có thể đặt tệp này vào thư mục có tên "JWTTokenTest" hoặc bất kỳ thứ gì bạn muốn Bây giờ thêm đoạn mã sau vào tập tin này
Mã này là Node xương sống của bạn. máy chủ js. Nó chứa tất cả mã cần thiết để bắt đầu một máy chủ mới và nhận yêu cầu Trước khi làm điều đó, bạn cần tạo "gói. json" và cài đặt các phụ thuộc nút được sử dụng trong mã này. Để làm điều đó, tất cả những gì bạn phải làm là vào terminal, di chuyển đến thư mục chứa "chỉ mục" của bạn. js" là và chạy lệnh sau
Thao tác này sẽ kích hoạt một trình hướng dẫn thiết lập ngắn giúp bạn tạo "gói. json", chứa các cài đặt cho Nút của bạn. dự án js. Bạn chỉ cần nhấn Enter trên tất cả các lời nhắc nếu bạn không biết chúng làm gì Nhân tiện, nếu bạn chưa cài đặt npm hoặc Node, bạn có thể tìm thấy nó tại đây Khi bạn hoàn thành việc này, bạn sẽ tìm thấy "gói. json" trong thư mục có tất cả các cài đặt cần thiết. Tuyệt quá Thiết lập nútBây giờ hãy quay lại thiết bị đầu cuối và nhập các lệnh sau để cài đặt các phụ thuộc được chỉ định trong mã bạn đã thêm vào "chỉ mục. tập tin js"
Sau đó tiếp tục và chạy mã của bạn. Trong trình duyệt của bạn, bạn có thể truy cập https. //máy chủ cục bộ. 8000 và kiểm tra công việc của bạn Ngoại trừ không có gì để xem. Máy chủ barebones của bạn vẫn cần thêm một số thứ Bây giờ, hãy tạo một tệp thứ hai—bạn có thể gọi nó là "trình xử lý. js" nếu bạn muốn— và thêm đoạn mã sau
Lưu ý rằng có một biến giữ khóa gọi là "jwtKey. " Khóa bí mật này sẽ được sử dụng để tạo và mã hóa mã thông báo và cần được bảo vệ bằng mọi giá. Tuy nhiên, với mục đích của ví dụ này, bạn có thể giữ nguyên như vậy Ngoài ra, có một biến cho biết thời gian hết hạn của mã thông báo tính bằng giây. Bạn có thể sử dụng cái này sau cho mục đích cấu hình. Bạn có thể thiết lập điều này để đáp ứng nhu cầu của bạn. Ngoài ra, có một từ điển xác định hai tài khoản người dùng cơ bản. Một lần nữa, chúng tôi sẽ sử dụng điều này để kiểm tra mã thông báo truy cập sau Bây giờ bạn cần cài đặt phần phụ thuộc mới mà chúng tôi đã thêm vào dự án. Trong trường hợp này, nó được gọi là "jsonwebtoken" và đó là một thư viện gói đơn giản nhưng mạnh mẽ quản lý các cơ chế xác thực mã thông báo JWT với rất ít dòng mã Để cài đặt phần phụ thuộc, chỉ cần chạy lệnh sau trong terminal
Xuất sắc Xác thực tòa nhàTiếp theo, bạn cần thêm các phương thức sẽ xử lý các yêu cầu khác nhau cần thiết để xác thực và ủy quyền. Trong trường hợp này, chúng sẽ là "đăng nhập", "chào mừng" và "làm mới. " Đây là mã cho ba phương pháp. Bạn có thể thêm chúng vào "trình xử lý. tập tin js"
Phương thức "đăng nhập" nhận yêu cầu đăng nhập cơ bản và kiểm tra thông tin đăng nhập được cung cấp. Nếu chúng khớp nhau, nó sẽ tạo mã thông báo JWT mới với tên người dùng và khóa bí mật. Phương pháp này cũng yêu cầu bạn chỉ định thuật toán ký và thời gian hết hạn. Cuối cùng, mã thông báo được ghi lại và lưu trong cookie để khách hàng có thể tìm nạp mã thông báo đó Phương thức "chào mừng", khi được gọi, sẽ tìm kiếm cookie này và xác nhận rằng mã thông báo hợp lệ bằng cách sử dụng khóa bí mật để giải mã nó. Nếu trường hợp này xảy ra, nó sẽ trả về một thông báo lời chào đơn giản Cuối cùng, phương thức "làm mới" lấy mã thông báo từ cookie theo cách tương tự. Tuy nhiên, nó thực hiện điều gì đó khác với mã thông báo đã xác thực. Sau khi xác nhận rằng đã đủ thời gian với mã thông báo hiện tại sắp hết hạn, nó sẽ tạo một mã mới và lưu trữ trong cookie để khách hàng tìm nạp Đủ đơn giản, phải không? Chạy mãBây giờ bạn chỉ cần thêm một vài dòng mã nữa để máy chủ của bạn hoạt động Sửa đổi "chỉ số. js" như sau Tuyệt quá. Tất cả các thành phần được tại chỗ Tại đây, bạn đang hiển thị ba điểm cuối—"đăng nhập", "chào mừng" và "làm mới"—trên máy chủ để khách hàng có thể tiếp cận chúng Bây giờ chỉ cần đi đến thiết bị đầu cuối và chạy mã của bạn bằng lệnh sau
Xuất sắc Kiểm tra xác thực mã thông báoĐể kiểm tra công việc của mình, bạn sẽ cần một công cụ như Postman để thay mặt bạn gửi yêu cầu đến máy chủ Đầu tiên, tạo một yêu cầu POST tới URL sau -H "Authorization: Bearer Rft3dqrs56Blirls56a"0 Thêm tải trọng sau vào phần thân của yêu cầu của bạn -H "Authorization: Bearer Rft3dqrs56Blirls56a"1 Đây là những thông tin đăng nhập để xác thực chính bạn với máy chủ Gửi yêu cầu và xem cách máy chủ ghi lại mã thông báo mới được tạo. Bạn có thể xác nhận rằng yêu cầu đã thành công bằng cách xem mã trạng thái "200" và cookie được lưu cùng với mã thông báo trong tiêu đề Để xác nhận rằng mã thông báo hoạt động, hãy gửi yêu cầu NHẬN tới URL bên dưới. Đừng quên sử dụng cùng một cửa sổ và làm sạch cơ thể 0Bạn sẽ thấy thông báo chào mừng Xuất sắc Bây giờ, nếu bạn đợi đủ lâu, mã thông báo cuối cùng sẽ hết hạn và bạn sẽ không còn quyền truy cập vào điểm cuối chào mừng. Để giữ cho mã thông báo và thông tin đăng nhập của bạn hợp lệ, bạn phải gọi điểm cuối cuối cùng bằng POST tới URL sau 1Bạn đã làm rất tốt Ví dụ trong bài viết này được lấy cảm hứng từ bài viết này về cách xây dựng một Nút đơn giản. cơ chế xác thực mã thông báo js Tiến về phía trướcNếu bạn là nhà phát triển, bạn có trách nhiệm cố gắng hết sức để bảo vệ dữ liệu trong các dự án của mình. Rốt cuộc, bạn có nghĩa vụ đối với người dùng của mình ngoài cam kết của bạn với chủ lao động hoặc khách hàng của mình, đặc biệt là với số lượng lớn hoạt động tội phạm xảy ra trên web và việc mọi người sẵn sàng cung cấp dữ liệu của họ để thuận tiện Bài đăng này được viết bởi Juan Reyes. Juan là một kỹ sư chuyên nghiệp và là một người mơ mộng, người đã vượt biển để đến Nhật Bản theo lời hứa về cơ hội và thách thức. Trong khi cố gắng tìm kiếm bản thân và xây dựng một cuộc sống có ý nghĩa ở phương đông, Juan mượn sự khôn ngoan từ kinh nghiệm của mình với tư cách là một doanh nhân, nghệ sĩ, người hối hả, người cha, người chồng và người bạn để bắt đầu viết về niềm đam mê, ý nghĩa, sự phát triển bản thân, khả năng lãnh đạo, các mối quan hệ . Nhiều năm đấu tranh và khám phá bản thân đã truyền cảm hứng cho anh ấy và thúc đẩy anh ấy dấn thân vào hành trình tìm kiếm trí tuệ Mã thông báo mang của tôi là gì?Mã thông báo mang là loại mã thông báo truy cập chủ yếu được sử dụng với OAuth 2. 0. Mã thông báo mang là một chuỗi không rõ ràng, không nhằm mục đích có bất kỳ ý nghĩa nào đối với khách hàng sử dụng nó . Một số máy chủ sẽ phát hành mã thông báo là một chuỗi ký tự thập lục phân ngắn, trong khi những máy chủ khác có thể sử dụng mã thông báo có cấu trúc, chẳng hạn như Mã thông báo Web JSON.
Mã thông báo truy cập được xác minh như thế nào?Mã thông báo truy cập
. Mã thông báo tự mã hóa toàn bộ ủy quyền và được bảo vệ bằng mật mã để chống giả mạo. JSON Web Token (JWT) đã trở thành tiêu chuẩn thực tế cho các token độc lập. by making a call to the authorisation server's introspection endpoint. The token encodes the entire authorisation in itself and is cryptographically protected against tampering. JSON Web Token (JWT) has become the defacto standard for self-contained tokens. |