User pools, identity pools, and JWTs

Sử dụng AWS Security dành cho Developer

Rahul Singh

Technical Product Manager

Cognito là hai dịch vụ trong một tên gọi

Amazon Cognito

  • Dịch vụ quản lý danh tính cho người dùng ứng dụng của bạn
  • Một tên gọi, hai dịch vụ riêng biệt

Hai câu hỏi nằm trên một đường ranh gạch đứt nhãn Amazon Cognito. Bên trong là hai bảng xanh cạnh nhau: user pool mô tả như danh bạ người dùng của bạn và identity pool như bộ trung gian cấp thông tin xác thực. Các đường từ cả hai bảng hội tụ vào một hộp cam gạch đứt bên dưới, ghi chú rằng nhiều ứng dụng dùng cả hai.

Sử dụng AWS Security dành cho Developer

Cognito là hai dịch vụ trong một tên gọi

Amazon Cognito

  • Dịch vụ quản lý danh tính cho người dùng ứng dụng của bạn
  • Một tên gọi, hai dịch vụ riêng biệt

Bạn cần cái nào?

  • Đăng nhập và hồ sơ người dùng: user pool
  • Trình duyệt/di động gọi AWS trực tiếp: identity pool

Hai câu hỏi nằm trên một đường ranh gạch đứt nhãn Amazon Cognito. Bên trong là hai bảng xanh cạnh nhau: user pool mô tả như danh bạ người dùng của bạn và identity pool như bộ trung gian cấp thông tin xác thực. Các đường từ cả hai bảng hội tụ vào một hộp cam gạch đứt bên dưới, ghi chú rằng nhiều ứng dụng dùng cả hai.

Sử dụng AWS Security dành cho Developer

User pool dùng để đăng nhập người dùng

Thư mục người dùng được quản lý

  • Đăng ký và đăng nhập
  • Đặt lại mật khẩu
  • Xác thực đa yếu tố

Luồng dọc: người dùng ứng dụng đăng nhập vào user pool giữ mật khẩu, và pool trả về một hộp chứa ID token, access token và refresh token

Sử dụng AWS Security dành cho Developer

User pool dùng để đăng nhập người dùng

Thư mục người dùng được quản lý

  • Đăng ký và đăng nhập
  • Đặt lại mật khẩu
  • Xác thực đa yếu tố

 

Thành công sẽ nhận ba token

Luồng dọc: người dùng ứng dụng đăng nhập vào user pool giữ mật khẩu, và pool trả về một hộp chứa ID token, access token và refresh token

Sử dụng AWS Security dành cho Developer

User pool dùng để đăng nhập người dùng

Thư mục người dùng được quản lý

  • Đăng ký và đăng nhập
  • Đặt lại mật khẩu
  • Xác thực đa yếu tố

 

Thành công sẽ nhận ba token

  • ID token: người dùng là ai
  • Access token: họ được gọi gì
  • Refresh token: lấy token mới sau này

Luồng dọc: người dùng ứng dụng đăng nhập vào user pool giữ mật khẩu, và pool trả về một hộp chứa ID token, access token và refresh token

Sử dụng AWS Security dành cho Developer

Identity pool cấp thông tin xác thực AWS

Token không phải là thông tin xác thực

  • Bằng chứng danh tính cho ứng dụng của bạn
  • Không phải thông tin xác thực để truy cập dịch vụ AWS

 

Identity pool: nhận token tin cậy, trả thông tin xác thực

Luồng dọc với hình học giống sơ đồ user pool: một token tin cậy được gửi vào identity pool, nơi kiểm tra bên phát hành và trả về thông tin xác thực AWS ràng buộc vào một vai trò và có hạn

Sử dụng AWS Security dành cho Developer

Identity pool cấp thông tin xác thực AWS

Token không phải là thông tin xác thực

  • Bằng chứng danh tính cho ứng dụng của bạn
  • Không phải thông tin xác thực để truy cập dịch vụ AWS

 

Identity pool: nhận token tin cậy, trả thông tin xác thực

  • Một job build đổi lấy OIDC token
  • Bằng chứng bạn đang giữ, đổi lấy thẻ ra vào

Luồng dọc với hình học giống sơ đồ user pool: một token tin cậy được gửi vào identity pool, nơi kiểm tra bên phát hành và trả về thông tin xác thực AWS ràng buộc vào một vai trò và có hạn

Sử dụng AWS Security dành cho Developer

Một ứng dụng, cả hai phần

Trình duyệt dùng cả hai

  1. Đăng nhập, nhận token
  2. Gửi token đó tới API của bạn

Bearer token: ai giữ thì dùng

Luồng dọc. Một trình duyệt đăng nhập vào user pool, trả về token. Token đó rẽ hai nhánh: trái tới API của bạn và phải tới identity pool. Identity pool trả về thông tin xác thực, và chính thông tin xác thực này truy cập S3.

Sử dụng AWS Security dành cho Developer

Một ứng dụng, cả hai phần

Trình duyệt dùng cả hai

  1. Đăng nhập, nhận token
  2. Gửi token đó tới API của bạn
  3. Đổi token đó lấy thông tin xác thực

Luồng dọc. Một trình duyệt đăng nhập vào user pool, trả về token. Token đó rẽ hai nhánh: trái tới API của bạn và phải tới identity pool. Identity pool trả về thông tin xác thực, và chính thông tin xác thực này truy cập S3.

Sử dụng AWS Security dành cho Developer

Một ứng dụng, cả hai phần

Trình duyệt dùng cả hai

  1. Đăng nhập, nhận token
  2. Gửi token đó tới API của bạn
  3. Đổi token đó lấy thông tin xác thực
  4. Dùng thông tin xác thực đó truy cập S3

Token cho mã của bạn, thông tin xác thực cho AWS

Luồng dọc. Một trình duyệt đăng nhập vào user pool, trả về token. Token đó rẽ hai nhánh: trái tới API của bạn và phải tới identity pool. Identity pool trả về thông tin xác thực, và chính thông tin xác thực này truy cập S3.

Sử dụng AWS Security dành cho Developer

Token là văn bản có chữ ký

Ba phần nối bằng dấu chấm và nhãn Header, Payload và Signature. Một ổ khóa mở nằm trên payload, và một ngoặc dưới hai phần đầu cho thấy phạm vi của chữ ký.

JWT: JSON Web Token

  • Claims: các phát biểu có nhãn về người dùng
Sử dụng AWS Security dành cho Developer

Token là văn bản có chữ ký

Ba phần nối bằng dấu chấm và nhãn Header, Payload và Signature. Một ổ khóa mở nằm trên payload, và một ngoặc dưới hai phần đầu cho thấy phạm vi của chữ ký.

JWT: JSON Web Token

  • Claims: các phát biểu có nhãn về người dùng
  • Được mã hóa, không phải mã hóa bảo mật
  • Ai cũng có thể đọc và ai cũng có thể sửa
Sử dụng AWS Security dành cho Developer

Hãy xác minh trước khi đọc

Xác minh trước tiên

  • JWKS: JSON Web Key Set, khóa công khai ký của bên phát hành
  • Kiểm tra chữ ký bằng các khóa đó

Sơ đồ cổng dọc. Một token đến và vượt qua bốn bước kiểm: chữ ký, bên phát hành, đối tượng nhận và hạn dùng. Khóa công khai của bên phát hành cấp vào bước kiểm chữ ký từ bên cạnh, và chỉ sau bước thứ tư mới đến hộp xanh để đọc claims.

Sử dụng AWS Security dành cho Developer

Hãy xác minh trước khi đọc

Xác minh trước tiên

  • JWKS: JSON Web Key Set, khóa công khai ký của bên phát hành
  • Kiểm tra chữ ký bằng các khóa đó

 

Rồi đến ba claim

  • iss: user pool của bạn
  • aud trên ID token, client_id trên access token
  • exp: còn hiệu lực

Sơ đồ cổng dọc. Một token đến và vượt qua bốn bước kiểm: chữ ký, bên phát hành, đối tượng nhận và hạn dùng. Khóa công khai của bên phát hành cấp vào bước kiểm chữ ký từ bên cạnh, và chỉ sau bước thứ tư mới đến hộp xanh để đọc claims.

Sử dụng AWS Security dành cho Developer

Token đã xác minh vẫn có thể sai

Hai thẻ đối xứng cạnh nhau. Thẻ ID token được đánh dấu là identity token, hiển thị client ID trong claim audience, và ghi chú không có scope, phía trên hộp xám cho thông tin người dùng là ai. Thẻ access token được đánh dấu là access token, hiển thị client ID trong claim định danh client riêng, và ghi chú có scope, phía trên hộp cam cho những gì họ được gọi. Một dải gạch đứt bên dưới ghi chú claim nhóm Cognito xuất hiện ở cả hai token.

Đã xác minh nhưng vẫn sai token

Sử dụng AWS Security dành cho Developer

Token đã xác minh vẫn có thể sai

Hai thẻ đối xứng cạnh nhau. Thẻ ID token được đánh dấu là identity token, hiển thị client ID trong claim audience, và ghi chú không có scope, phía trên hộp xám cho thông tin người dùng là ai. Thẻ access token được đánh dấu là access token, hiển thị client ID trong claim định danh client riêng, và ghi chú có scope, phía trên hộp cam cho những gì họ được gọi. Một dải gạch đứt bên dưới ghi chú claim nhóm Cognito xuất hiện ở cả hai token.

Đã xác minh nhưng vẫn sai token

token_use cho biết loại nào

  • cognito:groups có trên cả hai loại, và không phải scope

  • scope: token được phép gọi gì

  • sub: người dùng nào, và không bao giờ đổi
  • Danh tính không phải là quyền hạn
Sử dụng AWS Security dành cho Developer

Cùng luyện tập nào!

Sử dụng AWS Security dành cho Developer

Preparing Video For Download...