Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về
Apigee X. thông tin

Tổng quan
Thu hồi mã thông báo truy cập OAuth2 liên kết với mã ứng dụng của nhà phát triển hoặc mã nhận dạng người dùng cuối của ứng dụng hoặc cả hai.
Sử dụng chính sách về OAuthv2 để tạo mã truy cập OAuth 2.0. Mã thông báo do Apigee tạo có định dạng sau:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", //--in seconds "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
Phần tử application_name
chứa mã ứng dụng của nhà phát triển được liên kết với mã thông báo.
Theo mặc định, Apigee không đưa mã nhận dạng người dùng cuối vào mã thông báo. Bạn có thể định cấu hình Apigee để thêm mã nhận dạng người dùng cuối bằng cách thêm phần tử <AppEndUser>
vào chính sách OAuthv2:
<OAuthV2 name="GenerateAccessTokenClient"> <Operation>GenerateAccessTokenV/Operation> ... <AppEndUser>request.queryparam.app_enduser</AppEndUser> </OAuthV2>
Trong ví dụ này, hãy chuyển mã nhận dạng người dùng cuối đến chính sách OAuthv2 trong một tham số truy vấn có tên là app_enduser
.
Sau đó, mã nhận dạng người dùng cuối sẽ được đưa vào mã thông báo trong phần tử app_enduser
:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "app_enduser" : "6ZG094fgnjNf02EK", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", //--in seconds "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
Thu hồi theo mã ứng dụng của nhà phát triển
Thu hồi mã thông báo truy cập OAuth2 liên kết với mã ứng dụng của nhà phát triển. Tất cả mã thông báo truy cập OAuth2 do Apigee tạo đều bao gồm mã nhận dạng của ứng dụng nhà phát triển được liên kết với mã thông báo. Sau đó, bạn có thể thu hồi mã thông báo dựa trên mã ứng dụng đó.
Sử dụng API Ứng dụng dành cho nhà phát triển để lấy danh sách mã ứng dụng cho một nhà phát triển cụ thể.
Bạn cũng có thể sử dụng API ứng dụng dành cho nhà phát triển để biết thông tin chi tiết về một ứng dụng.
Thu hồi theo mã nhận dạng người dùng cuối của ứng dụng
Thu hồi mã thông báo truy cập OAuth2 liên kết với mã nhận dạng của một người dùng cuối cụ thể của ứng dụng. Đây là mã thông báo liên kết với mã nhận dạng của người dùng đã được cấp mã thông báo.
Theo mặc định, không có trường nào cho mã nhận dạng người dùng cuối trong mã thông báo truy cập OAuth. Để cho phép thu hồi mã truy cập OAuth 2.0 theo mã nhận dạng người dùng cuối, bạn phải định cấu hình chính sách OAuthv2 để đưa mã nhận dạng người dùng vào mã thông báo, như minh hoạ ở trên.
Để lấy mã nhận dạng người dùng cuối của ứng dụng, hãy sử dụng API ứng dụng dành cho nhà phát triển.
Mẫu
Các mẫu sau đây sử dụng chính sách Thu hồi OAuth V2 để thu hồi mã truy cập OAuth2.
Mã ứng dụng của nhà phát triển
Để thu hồi mã thông báo truy cập theo mã ứng dụng của nhà phát triển, hãy sử dụng phần tử <AppId>
trong chính sách của bạn.
Ví dụ sau đây dự kiến sẽ tìm thấy mã ứng dụng của nhà phát triển của mã truy cập trong thông số truy vấn có tên là app_id
:
<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy"> <DisplayName>Revoke OAuth v2.0-1</DisplayName> <AppId ref="request.queryparam.app_id"></AppId> </RevokeOAuthV2>
Dựa vào mã nhận dạng của ứng dụng nhà phát triển, chính sách này sẽ thu hồi mã truy cập.
Thu hồi trước dấu thời gian
Để thu hồi mã thông báo truy cập theo mã ứng dụng của nhà phát triển được tạo trước một ngày và giờ cụ thể, hãy sử dụng phần tử <RevokeBeforeTimestamp>
trong chính sách của bạn. <RevokeBeforeTimestamp>
chỉ định thời gian bắt đầu của hệ thống theo múi giờ UTC tính bằng mili giây. Tất cả mã thông báo được phát hành trước thời điểm đó sẽ bị thu hồi.
Ví dụ sau đây sẽ thu hồi mã truy cập cho một ứng dụng dành cho nhà phát triển được tạo trước ngày 1 tháng 7 năm 2019:
<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy"> <DisplayName>Revoke OAuth v2.0-1</DisplayName> <AppId ref="request.queryparam.app_id"></AppId> <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp> </RevokeOAuthV2>
Phần tử <RevokeBeforeTimestamp>
nhận một số nguyên 64 bit (dài) biểu thị số mili giây đã trôi qua kể từ nửa đêm ngày 1 tháng 1 năm 1970 (theo giờ UTC).
Tham chiếu phần tử
Tài liệu tham khảo về phần tử mô tả các phần tử và thuộc tính của chính sách RevokeOAuthV2.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1"> <DisplayName>Get OAuth v2.0 Info 1</DisplayName> <AppId ref="variable"></AppId> <EndUserId ref="variable"></EndUserId> <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp> <Cascade>false</Cascade> </RevokeOAuthV2>
Thuộc tính <RevokeOAuthV2>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">
Bảng sau đây mô tả các thuộc tính phổ biến cho tất cả phần tử mẹ của chính sách:
Thuộc tính | Mô tả | Mặc định | Sự hiện diện |
---|---|---|---|
name |
Tên nội bộ của chính sách. Giá trị của thuộc tính Bạn có thể sử dụng phần tử |
Không áp dụng | Bắt buộc |
continueOnError |
Đặt thành Đặt thành |
false | Không bắt buộc |
enabled |
Đặt thành Đặt thành |
đúng | Không bắt buộc |
async |
Thuộc tính này không được dùng nữa. |
false | Không được dùng nữa |
Phần tử <DisplayName>
Sử dụng cùng với thuộc tính name
để gắn nhãn chính sách trong trình chỉnh sửa proxy giao diện người dùng quản lý bằng một tên khác, bằng ngôn ngữ tự nhiên.
<DisplayName>Policy Display Name</DisplayName>
Mặc định |
Không áp dụng Nếu bạn bỏ qua phần tử này, giá trị của thuộc tính |
---|---|
Sự hiện diện | Không bắt buộc |
Loại | Chuỗi |
Phần tử <AppId>
Chỉ định mã ứng dụng của nhà phát triển của mã thông báo cần thu hồi. Truyền một biến chứa mã ứng dụng hoặc mã ứng dụng cố định.
<AppId>appIdString</AppId> or: <AppId ref="request.queryparam.app_id"></AppId>
Mặc định |
|
---|---|
Sự hiện diện |
Không bắt buộc |
Loại | Chuỗi |
Giá trị hợp lệ |
Một biến flow chứa chuỗi mã ứng dụng hoặc một chuỗi cố định. |
Phần tử <Cascade>
Nếu true
và bạn có mã thông báo truy cập mờ truyền thống, thì cả mã thông báo làm mới và mã thông báo truy cập sẽ bị thu hồi nếu <AppId>
hoặc <EndUserId>
khớp.
Nếu là false
, thì chỉ mã thông báo truy cập bị thu hồi và mã thông báo làm mới không thay đổi. Hành vi tương tự chỉ áp dụng cho mã thông báo truy cập mờ.
<Cascade>false<Cascade>
Mặc định |
false |
---|---|
Sự hiện diện |
Không bắt buộc |
Loại | Boolean |
Giá trị hợp lệ | true hoặc false |
Phần tử <EndUserId>
Chỉ định mã nhận dạng người dùng cuối của ứng dụng cho mã thông báo cần thu hồi. Truyền một biến chứa mã nhận dạng người dùng hoặc một chuỗi mã thông báo cố định.
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
Mặc định |
|
---|---|
Sự hiện diện |
Không bắt buộc |
Loại | Chuỗi |
Giá trị hợp lệ |
Một biến flow chứa chuỗi mã nhận dạng người dùng hoặc một chuỗi cố định. |
Phần tử <RevokeBeforeTimestamp>
Thu hồi các mã thông báo được phát hành trước dấu thời gian. Phần tử này hoạt động với <AppId>
và <EndUserId>
để cho phép bạn thu hồi mã thông báo trước một thời điểm cụ thể.
Giá trị mặc định là thời điểm chính sách thực thi.
<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp> or: <RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
Mặc định |
Dấu thời gian thực thi chính sách. |
---|---|
Sự hiện diện |
Không bắt buộc |
Loại | Số nguyên 64 bit (dài) biểu thị số mili giây đã trôi qua kể từ nửa đêm ngày 1 tháng 1 năm 1970 (theo giờ UTC). |
Giá trị hợp lệ |
Một biến flow chứa dấu thời gian hoặc một dấu thời gian cố định. Dấu thời gian không được ở trong tương lai và không được trước ngày 1 tháng 1 năm 2014. |
Biến flow
Chính sách RevokeOAuthV2 không đặt biến luồng.
Thông tin tham khảo về lỗi
Phần này mô tả các mã lỗi và thông báo lỗi được trả về cũng như các biến lỗi do Edge đặt khi chính sách này kích hoạt lỗi. Bạn cần biết thông tin này nếu đang phát triển quy tắc lỗi để xử lý lỗi. Để tìm hiểu thêm, hãy xem bài viết Những điều bạn cần biết về lỗi liên quan đến chính sách và Cách xử lý lỗi.
Lỗi thời gian chạy
Những lỗi này có thể xảy ra khi chính sách thực thi. Tên lỗi hiển thị bên dưới là các chuỗi được gán cho biến fault.name
khi xảy ra lỗi. Hãy xem phần biến Lỗi bên dưới để biết thêm thông tin chi tiết.
Mã lỗi | Trạng thái HTTP | Nguyên nhân |
---|---|---|
steps.oauth.v2.InvalidFutureTimestamp |
500 | Dấu thời gian không được ở trong tương lai. |
steps.oauth.v2.InvalidEarlyTimestamp |
500 | Dấu thời gian không được sớm hơn ngày 1 tháng 1 năm 2014. |
steps.oauth.v2.InvalidTimestamp |
500 | Dấu thời gian không hợp lệ. |
steps.oauth.v2.EmptyAppAndEndUserId |
500 | Cả AppdId và EndUserId đều không được để trống. |
Lỗi triển khai
Hãy tham khảo thông báo được báo cáo trong giao diện người dùng để biết thông tin về lỗi triển khai.
Biến lỗi
Các biến này được đặt khi chính sách này kích hoạt lỗi trong thời gian chạy.
Biến | Trong đó | Ví dụ: |
---|---|---|
fault.name="fault_name" |
fault_name là tên của lỗi, như được liệt kê trong bảng Lỗi thời gian chạy ở trên. Tên lỗi là phần cuối cùng của mã lỗi. | fault.name Matches "IPDeniedAccess" |
oauthV2.policy_name.failed |
policy_name là tên do người dùng chỉ định của chính sách đã gửi lỗi. | oauthV2.GetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name là tên do người dùng chỉ định của chính sách đã gửi lỗi. | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2.policy_name.fault.cause |
policy_name là tên do người dùng chỉ định của chính sách đã gửi lỗi. | oauthV2.GetTokenInfo.cause = ClientID is Invalid |
Ví dụ về phản hồi lỗi
{ "fault":{ "faultstring":"Timestamp is in the future.", "detail":{ "errorcode":"steps.oauth.v2.InvalidFutureTimestamp" } } }
Ví dụ về quy tắc lỗi
<FaultRule name="RevokeOAuthV2 Faults"> <Step> <Name>AM-InvalidTimestamp</Name> </Step> <Condition>(fault.name = "InvalidFutureTimestamp")</Condition> </FaultRule>