Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Apigee Edge cung cấp khung OAuth 2.0 để các API bảo mật. OAuth2 là một trong những phương thức xác thực phổ biến nhất dựa trên mã thông báo, tiêu chuẩn mở và mô hình uỷ quyền. API này cho phép các ứng dụng khách truy cập API thay mặt cho người dùng mà không cần yêu cầu người dùng tiết lộ tên người dùng và mật khẩu của họ.
Apigee Edge cho phép nhà phát triển tạo quyền truy cập và/hoặc làm mới mã thông báo bằng cách triển khai một trong bốn loại cấp quyền OAuth2 - thông tin đăng nhập của khách hàng, mật khẩu, ngầm ẩn và mã uỷ quyền - bằng cách sử dụng chính sách OAuthv2. Ứng dụng dùng mã truy cập để sử dụng API bảo mật. Mỗi mã truy cập có thời hạn riêng (bạn có thể đặt thời gian này trong chính sách OAuthv2.
Bạn có thể chọn cấp mã làm mới cùng với mã truy cập, trong đó có một số loại cấp. Làm mới mã thông báo này được dùng để lấy mã truy cập mới, hợp lệ sau khi mã truy cập ban đầu đã hết hạn hoặc đã bị thu hồi. Bạn cũng có thể đặt thời gian hết hạn cho mã làm mới trong chính sách OAuthv2.
Phản mẫu này có liên quan đến phản mẫu của đặt thời gian hết hạn dài cho mã thông báo OAuth.
Phản mẫu
Không đặt thời gian hết hạn cho mã làm mới trong chính sách OAuthv2 dẫn đến việc tích luỹ mã thông báo OAuth và tăng mức sử dụng dung lượng ổ đĩa trên các nút Cassandra.
Ví dụ về chính sách OAuthV2 dưới đây thể hiện cấu hình bị thiếu cho
<RefreshTokenExpiresIn>
:
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes --> <!--<RefreshTokenExpiresIn> is missing --> <SupportedGrantTypes> <GrantType>password</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
Trong ví dụ trên:
- Mã truy cập được thiết lập với thời gian hết hạn hợp lý thấp là 30 phút.
- Chưa đặt thời hạn của mã làm mới.
- Mã làm mới vẫn tồn tại vĩnh viễn trong kho dữ liệu (Cassandra) khiến dữ liệu tích luỹ.
- Mã làm mới được tạo mà không có thời hạn có thể được dùng vô thời hạn để tạo mã truy cập.
- Nếu lưu lượng truy cập vào API này là 10 yêu cầu mỗi giây, thì nó có thể tạo ra 864.000 mã thông báo sau một ngày nữa.
Tác động
- Nếu mã làm mới được tạo mà không có thời hạn, thì có hai hậu quả lớn:
- Bạn có thể sử dụng mã làm mới bất cứ lúc nào trong tương lai, có thể là trong nhiều năm, để lấy quyền truy cập mã thông báo. Điều này có thể ảnh hưởng đến tính bảo mật.
- Hàng trong Cassandra có chứa mã làm mới sẽ không bao giờ bị xoá. Điều này sẽ khiến dữ liệu được tích luỹ trong Cassandra.
- Nếu bạn không sử dụng mã làm mới để lấy mã truy cập mới, mà thay vào đó hãy tạo một mã làm mới và mã truy cập mới, mã làm mới cũ hơn sẽ vẫn còn trong Cassandra. Do đó, hãy làm mới mã thông báo sẽ tiếp tục tích luỹ trong Cassandra, tiếp tục tăng thêm, mức sử dụng ổ đĩa tăng lên và tình trạng nén chặt chẽ hơn, cuối cùng sẽ gây ra thao tác đọc/ghi độ trễ tại Cassandra.
Phương pháp hay nhất
Sử dụng thời gian hết hạn phù hợp thấp cho cả mã làm mới và mã truy cập. Xem phương pháp hay nhất để đặt thời hạn làm mới và mã truy cập. Nhớ chỉ định cấu hình thời hạn cho cả hai quyền truy cập và làm mới mã thông báo theo chính sách. Tham khảo Tài liệu về chính sách OauthV2 để biết thêm thông tin chi tiết về cấu hình chính sách.
Các phương pháp hay nhất dành riêng cho Edge dành cho khách hàng sử dụng Cloud Private
Phần này mô tả các phương pháp hay nhất dành riêng cho khách hàng Edge dành cho khách hàng sử dụng Cloud Private Cloud.
Chỉ định thời hạn mã làm mới mặc định
Theo mặc định, nếu không chỉ định thời gian hết hạn mã làm mới trong cấu hình chính sách, Edge tạo mã làm mới mà không có thời hạn. Bạn có thể ghi đè hành vi này bằng cách quy trình sau:
- Trên nút xử lý thông báo, hãy chỉnh sửa hoặc tạo tệp ghi đè cấu hình
$APIGEE_ROOT/customer/application/message-processor.properties
. Đảm bảo rằng tệp này được người dùngapigee
có thể đọc được. - Thêm dòng sau vào tệp:
Thao tác này sẽ đặt thời hạn của mã làm mới mặc định (nếu không có chỉ định nào trong chính sách) thành 1 giờ. Bạn có thể thay đổi giá trị mặc định này dựa trên nhu cầu kinh doanh của mình.conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
- Khởi động lại dịch vụ Trình xử lý thư:
apigee-service edge-message-processor restart
- Lặp lại từng bước trên trong tất cả các nút của trình xử lý thư.
Các phương pháp hay nhất ở Cassandra
Hãy thử nâng cấp lên phiên bản Apigee mới nhất được cung cấp công khai. Tiếp tục dùng Apigee để phát hành các bản sửa lỗi và tính năng nâng cao tiếp tục cải thiện và tối ưu hoá hoạt động quản lý mã thông báo trong Apigee. Trong Apigee, mã truy cập và mã làm mới được lưu trữ trong Cassandra trong không gian phím "kilomet". Bạn cần đảm bảo rằng chiến lược nén của URL này không gian phím được đặt thànhLeveledCompactionStrategy
.
Bạn nên kiểm tra để đảm bảo rằng các chỉ mục sau không tồn tại:
- kms.oauth_20_access_tokens.oauth_20_access_tokens_organization_name_idx#f0f0f0 và
- kms.oauth_20_access_tokens.oauth_20_access_tokens_status_idx
Bạn cũng có thể giảm
gc_grace_seconds
trong bảng kms.oauth_20_access_tokens
từ mặc định là 10 ngày xuống thấp hơn
giá trị (chẳng hạn như 3 ngày) để đảm bảo tombstone được tạo ra do mã thông báo bị xoá
hoàn toàn khỏi kho dữ liệu nhanh hơn.