Authentication header là gì

Authorization header    

  • Báo cáo

Bài viết này sẽ cung cấp thông tin chi tiết về Authorization header.

1. Định nghĩa

API sử dụng Authorization để đảm bảo rằng người dùng truy cập dữ liệu một cách an toàn. Đây là tiền đề để nhận biết người gửi yêu cầu và quyền truy cập dữ liệu của họ.

Có nhiều kiểu xác thực khác nhau. Dữ liệu xác thực có thể được bao gồm trong header, body hoặc parameter khi gửi yêu cầu.

Với Authorization header, thông tin để xác thực người dùng được gửi kèm trong header.

2. Danh sách

a. Basic Auth

Basic Auth là một kiểu xác thực đơn giản được tích hợp trong giao thức HTTP.

Authorization header sẽ chứa một chuỗi base64-encoded, là giá trị username và password người dùng, được thêm vào header như sau:

Authorization: Basic 

Base64-encoded không phải là encryption hoặc hashing. Base64 có thể dễ dàng được decoded. Phương pháp này tương đương với việc gửi thông tin đăng nhập dưới dạng văn bản rõ ràng. Do đó nên dùng HTTPS kết hợp với Basic Auth.

b. Bearer Token

Thường được gọi là Token authentication. Đây là một hình thức xác thực HTTP liên quan đến token có tên là Bearer token. Như tên mô tả Bearer Token cấp quyền truy cập cho người dùng khi có token hợp lệ.

Bearer token là một chuỗi văn bản, thường được tạo bởi server và trả về sau yêu cầu đăng nhập. Client phải thêm token này ngay sau Bearer và gửi đi trong Authorization header khi yêu cầu các tài nguyên được bảo vệ như sau:

Authorization: Bearer 

Tương tự như Basic Auth, Bearer Token chỉ nên được sử dụng qua HTTPS [SSL]. JSON Web Token [JWT] được khuyến khích cho Bearer Token

c. API Key

Với API Key, một cặp key-value được bao gồm trong header hoặc query parameter sẽ gửi tới server khi gọi API.

Key-value trong query string:

GET /endpoint?api_key=api_value

Hoặc trong request header:

Api-Key: api_value

d. Digest Auth

Digest Auth truyền thông tin đăng nhập ở dạng encrypted, bằng cách áp dụng hash algorithm cho username và password để chuyển đổi thành phản hồi và sau đó gửi đến server sau khi server cung cấp nonce, phương thức HTTP, URI đã yêu cầu...

HTTP Digest Auth là hoạt động như sau:

Authorization: Digest username="admin" Realm="abcxyz" nonce="1357908642", uri="/uri" response="qwertyuiopasdfghjklzxcvbnm"

Lưu ý:

  • nonce: Một chuỗi duy nhất được chỉ định bởi server, chỉ dùng 1 lần duy nhất.
  • Realm: Một chuỗi được chỉ định bởi server, là 1 hash.
  • response: Là kết quả sau khi encrypted username, password, Realm.

e. OAuth2.0

Với OAuth 2.0, trước tiên cần truy xuất access token cho API, sau đó sử dụng token đó để xác thực các yêu cầu sau đó. Truy cập thông tin qua luồng OAuth 2.0 khác nhau rất nhiều giữa các nhà cung cấp dịch vụ API, nhưng thường liên quan đến một số yêu cầu qua lại giữa client, user và API.

Luồng OAuth 2.0 hoạt động như sau:

Authorization: Bearer 

f. Hawk Authentication

Hawk authentication cho phép bạn ủy quyền các yêu cầu bằng cách sử dụng partial cryptographic verification.

Các thông số Hawk Authentication như sau:

  • Hawk Auth ID: Giá trị ID xác thực API.
  • Hawk Auth Key: Giá trị khóa xác thực API.
  • Algorithm: Là một hash algorithm [sha266, sha1] được sử dụng để tạo message authentication code [MAC].
  • Các thông số nâng cao:
  • user: Username.
  • nonce: Một chuỗi ngẫu nhiên được tạo bởi client.
  • ext: Thông tin đặc biệt của ứng dụng sẽ được gửi cùng với request.
  • app: Ràng buộc giữa thông tin đăng nhập và ứng dụng để ngăn kẻ tấn công sử dụng thông tin đăng nhập.
  • dlg: ID của ứng dụng mà thông tin đăng nhập đã được cấp.
  • timestamp: Timestamp của server sử dụng để ngăn chặn replay attacks bên ngoài time window.

Trong request header, Hawk Authentication giống như sau:

Authorization: Hawk id="abcxyz123", ts="1234567890", nonce="zxcvbnm", mac="qwertyuiopasdfghjkl"

g. AWS Signature

AWS là quy trình cấp phép cho các request của Amazon Web Services [AWS]. AWS sử dụng HTTP scheme tùy chỉnh dựa trên keyed-HMAC [Hash Message Authentication Code] để xác thực.

Nếu dùng request header , AuthorizationX-Amz- cần được ghép phía trước chi tiết xác thực và thêm vào header. Còn dùng request URL, chi tiết xác thực theo sau X-Amz- cần được thêm trong params.

Các thông số AWS Signature như sau:

  • AWS Region: Khu vực nhận yêu cầu [Mặc định là us-east-1].
  • Service Name: Dịch vụ tiếp nhận yêu cầu.
  • Session Token: Chỉ bắt buộc khi sử dụng thông tin xác thực bảo mật tạm thời.

Có thể xem thêm về AWS Signature tại:

  • Signing and authenticating REST requests
  • Use Postman to call a REST API  

Chủ Đề