Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Nội dung
Chính sách Xác minh khoá API cho phép bạn thực thi quy trình xác minh khoá API trong thời gian chạy, chỉ cho phép ứng dụng có khoá API được phê duyệt sẽ truy cập vào API của bạn. Chính sách này đảm bảo rằng khoá API là hợp lệ, có chưa bị thu hồi và được phê duyệt sử dụng các tài nguyên cụ thể được liên kết với API của bạn của Google dành cho doanh nghiệp.
Mẫu
Khoá trong tham số truy vấn
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.queryparam.apikey" /> </VerifyAPIKey>
Trong ví dụ này, chính sách sẽ tìm khoá API trong một biến luồng được gọi
request.queryparam.apikey
. Biến request.queryparam.{name}
là biến luồng cạnh chuẩn được điền bằng giá trị của thông số truy vấn được chuyển
trong yêu cầu ứng dụng.
Lệnh curl
sau đây chuyển khoá API trong một tham số truy vấn:
curl http://myorg-test.apigee.net/mocktarget?apikey=IEYRtW2cb7A5Gs54A1wKElECBL65GVls
Khóa trong tiêu đề
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.header.x-apikey" /> </VerifyAPIKey>
Trong ví dụ này, chính sách sẽ tìm khoá API trong một biến luồng được gọi
request.header.x-apikey
. Biến request.header.{name}
là biến luồng cạnh chuẩn được điền bằng giá trị của một tiêu đề
trong yêu cầu ứng dụng.
CURL sau đây minh hoạ cách chuyển khoá API trong một tiêu đề:
curl "http://myorg-test.apigee.net/mocktarget" -H "x-apikey:IEYRtW2cb7A5Gs54A1wKElECBL65GVls"
Khoá trong biến
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="requestAPIKey.key"/> </VerifyAPIKey>
Chính sách này có thể tham chiếu bất kỳ biến nào chứa khoá. Chính sách trong ví dụ này trích xuất khoá API từ biến có tên requestAPIKey.key.
Cách hệ thống điền biến đó là tuỳ thuộc vào bạn. Ví dụ: bạn có thể sử dụng tính năng Trích xuất Chính sách biến để điền requestAPIKey.key từ một tham số truy vấn có tên là myKey, như minh hoạ bên dưới:
<ExtractVariables async="false" continueOnError="false" enabled="true" name="SetAPIKeyVar"> <Source>request</Source> <QueryParam name="myKey"> <Pattern ignoreCase="true">{key}</Pattern> </QueryParam> <VariablePrefix>requestAPIKey</VariablePrefix> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </ExtractVariables>
Truy cập vào các biến về luồng chính sách
<AssignMessage async="false" continueOnError="false" enabled="true" name="accessverifyvars"> <AssignVariable> <Name>devFirstName</Name> <Ref>verifyapikey.verify-api-key.developer.firstName</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>devLastName</Name> <Ref>verifyapikey.verify-api-key.developer.lastName</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>devEmail</Name> <Ref>verifyapikey.verify-api-key.developer.email</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Edge tự động điền sẵn một nhóm biến luồng khi thực thi Khoá API Xác minh về khoá API hợp lệ. Bạn có thể sử dụng các biến này để truy cập thông tin như ứng dụng tên, mã ứng dụng và thông tin về nhà phát triển hoặc công ty đã đăng ký ứng dụng đó. Trong ví dụ ở trên, bạn sử dụng chính sách Chỉ định tin nhắn để truy cập tên, họ của nhà phát triển tên và địa chỉ email sau khi thực thi Khoá API Xác minh.
Tất cả các biến này đều có tiền tố:
verifyapikey.{policy_name}
Trong ví dụ này, tên của chính sách khoá API Xác minh là "verify-api-key". Vì vậy, bạn tham chiếu
tên của nhà phát triển đưa ra yêu cầu bằng cách truy cập vào
biến verifyapikey.verify-api-key.developer.firstName.
Tìm hiểu Edge
Giới thiệu về chính sách Xác minh khoá API
Khi nhà phát triển đăng ký ứng dụng trên Edge, Edge sẽ tự động tạo khoá người dùng và cặp bí mật. Bạn có thể xem cặp khoá bí mật và khoá người dùng của ứng dụng trong giao diện người dùng Edge hoặc truy cập chúng từ API Edge.
Tại thời điểm đăng ký ứng dụng, nhà phát triển chọn một hoặc nhiều sản phẩm API để liên kết với ứng dụng, trong đó sản phẩm API là một tập hợp tài nguyên có thể truy cập thông qua proxy API. Sau đó, nhà phát triển chuyển khoá API (khoá người tiêu dùng) như một phần của mọi yêu cầu đối với API trong sản phẩm API được liên kết với ứng dụng. Hãy xem phần Tổng quan về việc xuất bản để biết thêm thông tin.
Bạn có thể dùng khoá API làm mã xác thực hoặc dùng các khoá này để truy cập vào OAuth mã thông báo. Trong OAuth, khoá API được gọi là "client id" (mã ứng dụng khách). Các tên này có thể sử dụng thay thế cho nhau. Xem Trang chủ OAuth để biết thêm thông tin.
Edge tự động điền sẵn một nhóm biến luồng khi thực thi chính sách Xác minh khoá API. Xem Flow biến bên dưới để biết thêm thông tin.
Tham chiếu phần tử
Sau đây là các phần tử và thuộc tính mà bạn có thể thiết lập theo chính sách này:
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-1"> <DisplayName>Custom label used in UI</DisplayName> <APIKey ref="variable_containing_api_key"/> </VerifyAPIKey>
<VerifyAPIKey> thuộc tính
Ví dụ sau đây cho thấy các thuộc tính trên thẻ <VerifyAPIKey>
:
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key-1">
Bảng sau đây mô tả những thuộc tính chung 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 (Không bắt buộc) Bạn có thể 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 |
Hãy đặ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 |
<DisplayName> phần tử
Hãy sử dụng cùng với thuộc tính name
để gắn nhãn chính sách trong phần
trình chỉnh sửa proxy giao diện người dùng quản lý có tên ngôn ngữ tự nhiên khác.
<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 |
<APIKey> phần tử
Phần tử này chỉ định biến luồng chứa khoá API. Thông thường, ứng dụng gửi khoá API
trong tham số truy vấn, tiêu đề HTTP hoặc tham số biểu mẫu. Ví dụ: nếu khoá được gửi trong tiêu đề
có tên là x-apikey
, thì bạn sẽ tìm thấy khoá trong biến: request.header.x-apikey
Mặc định | NA |
---|---|
Sự hiện diện | Bắt buộc |
Loại | Chuỗi |
Thuộc tính
Bảng sau đây mô tả các thuộc tính của phần tử <APIKey>
Thuộc tính | Mô tả | Mặc định | Sự hiện diện |
---|---|---|---|
tham chiếu |
Tham chiếu đến biến chứa khoá API. Bạn chỉ được chọn một vị trí cho mỗi chính sách. |
Không áp dụng | Bắt buộc |
Ví dụ
Trong những ví dụ này, khoá được chuyển vào các tham số và một tiêu đề có tên là x-apikey
.
Dưới dạng tham số truy vấn:
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.queryparam.x-apikey"/> </VerifyAPIKey>
Dưới dạng tiêu đề HTTP:
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.header.x-apikey"/> </VerifyAPIKey>
Dưới dạng tham số biểu mẫu HTTP:
<VerifyAPIKey name="APIKeyVerifier"> <APIKey ref="request.formparam.x-apikey"/> </VerifyAPIKey>
Giản đồ
Biến luồng
Khi chính sách Xác minh khoá API được thực thi trên một khoá API hợp lệ, Edge sẽ điền sẵn một tập hợp quy trình biến. Các biến này sẽ có sẵn trong các chính sách hoặc mã được thực thi sau trong quy trình và thường được dùng để thực hiện xử lý tuỳ chỉnh dựa trên các thuộc tính của khoá API như tên ứng dụng, sản phẩm API dùng để uỷ quyền khoá hoặc thuộc tính tuỳ chỉnh của khoá API đó.
Chính sách này điền sẵn một số loại biến luồng, bao gồm:
- Giải pháp chung
- Ứng dụng
- Nhà phát triển
- Công ty
- Số liệu phân tích
Mỗi loại biến luồng có một tiền tố khác nhau. Tất cả biến đều là đại lượng vô hướng, ngoại trừ các biến được biểu thị cụ thể dưới dạng mảng.
Biến luồng chung
Bảng sau đây liệt kê các biến quy trình chung được điền theo chính sách Xác minh khoá API. Tất cả các biến này đều có tiền tố:
verifyapikey.{policy_name}
Ví dụ: verifyapikey.{policy_name}.client_id
Các biến có sẵn bao gồm:
Biến | Mô tả |
---|---|
client_id |
Khoá của người dùng (còn gọi là khoá API hoặc khoá ứng dụng) do ứng dụng yêu cầu cung cấp. |
client_secret |
Thông tin mật của người dùng được liên kết với khoá của người dùng. |
redirection_uris |
Bất kỳ URI chuyển hướng nào trong yêu cầu. |
developer.app.id |
Mã ứng dụng của nhà phát triển đưa ra yêu cầu. |
developer.app.name |
Tên ứng dụng của ứng dụng của nhà phát triển đưa ra yêu cầu. |
developer.id |
Mã của nhà phát triển đã đăng ký làm chủ sở hữu của ứng dụng đưa ra yêu cầu. |
developer.{custom_attrib_name} |
Mọi thuộc tính tuỳ chỉnh bắt nguồn từ hồ sơ khoá ứng dụng. |
DisplayName |
Giá trị <DisplayName> của chính sách . |
failed |
Đặt thành "true" khi xác thực Khoá API không thành công. |
{custom_app_attrib} |
Mọi thuộc tính tuỳ chỉnh bắt nguồn từ hồ sơ ứng dụng. Chỉ định tên của tuỳ chỉnh . |
apiproduct.name* |
Tên của sản phẩm API dùng để xác thực yêu cầu. |
apiproduct.{custom_attrib_name}* |
Mọi thuộc tính tuỳ chỉnh bắt nguồn từ hồ sơ sản phẩm API. |
apiproduct.developer.quota.limit* |
Hạn mức được đặt cho sản phẩm API, nếu có. |
apiproduct.developer.quota.interval* |
Khoảng thời gian hạn mức được đặt trên sản phẩm API, nếu có. |
apiproduct.developer.quota.timeunit* |
Đơn vị thời gian của hạn mức được đặt trên sản phẩm API, nếu có. |
* Các biến của sản phẩm API được điền tự động nếu các sản phẩm API đó là
được định cấu hình với môi trường, proxy và tài nguyên hợp lệ (được lấy từ
proxy.pathsuffix ). Để biết hướng dẫn về cách thiết lập các sản phẩm API, hãy xem
Sử dụng Edge
API quản lý để phát hành API. |
Biến luồng ứng dụng
Chính sách này đã điền sẵn các biến luồng sau đây chứa thông tin về ứng dụng. Tất cả các biến này đều có tiền tố:
verifyapikey.{policy_name}.app
.
Ví dụ:
verifyapikey.{policy_name}.app.name
Các biến có sẵn bao gồm:
Biến | Mô tả |
---|---|
name |
Tên ứng dụng. |
id |
Mã của ứng dụng. |
accessType |
Apigee không dùng đến. |
callbackUrl |
URL gọi lại của ứng dụng. Thường chỉ dùng cho OAuth. |
DisplayName |
Tên hiển thị của ứng dụng. |
status |
Trạng thái của ứng dụng, chẳng hạn như "đã phê duyệt" hoặc "bị thu hồi". |
apiproducts |
Một mảng chứa danh sách sản phẩm API được liên kết với ứng dụng. |
appFamily |
Bất kỳ nhóm ứng dụng nào chứa ứng dụng đó hoặc "mặc định". |
appParentStatus |
Trạng thái gốc của ứng dụng, chẳng hạn như "đang hoạt động" hoặc "không hoạt động" |
appType |
Loại ứng dụng, hoặc là "Công ty" hoặc "Nhà phát triển". |
appParentId |
Mã của ứng dụng mẹ. |
created_at |
Dấu ngày/giờ khi tạo ứng dụng. |
created_by |
Địa chỉ email của nhà phát triển đã tạo ứng dụng. |
last_modified_at |
Dấu ngày/giờ khi ứng dụng được cập nhật lần gần đây nhất. |
last_modified_by |
Địa chỉ email của nhà phát triển đã cập nhật ứng dụng lần gần đây nhất. |
{app_custom_attributes} |
Thuộc tính ứng dụng tuỳ chỉnh bất kỳ. Chỉ định tên của thuộc tính tuỳ chỉnh. |
Biến luồng của nhà phát triển
Các biến luồng sau chứa thông tin về nhà phát triển được điền sẵn bằng . Tất cả các biến này đều có tiền tố:
verifyapikey.{policy_name}.developer
Ví dụ:
verifyapikey.{policy_name}.developer.id
Các biến có sẵn bao gồm:
Biến | Mô tả |
---|---|
id |
Trả về {org_name}@@@{developer_id} |
userName |
Tên người dùng của nhà phát triển. |
firstName |
Tên của nhà phát triển. |
lastName |
Họ của nhà phát triển. |
email |
Địa chỉ email của nhà phát triển. |
status |
Trạng thái của nhà phát triển, là đang hoạt động, không hoạt động hoặc đăng nhập_lock. |
apps |
Một loạt ứng dụng liên kết với nhà phát triển. |
created_at |
Tem ngày/giờ khi nhà phát triển được tạo. |
created_by |
Địa chỉ email của người dùng đã tạo nhà phát triển. |
last_modified_at |
Dấu ngày/giờ khi nhà phát triển được sửa đổi lần gần đây nhất. |
last_modified_by |
Địa chỉ email của người dùng đã sửa đổi nhà phát triển. |
{developer_custom_attributes} |
Thuộc tính tuỳ chỉnh bất kỳ của nhà phát triển. Chỉ định tên của thuộc tính tuỳ chỉnh. |
Company |
Tên của công ty (nếu có) liên kết với nhà phát triển. |
Biến lưu lượng của công ty
Những biến luồng sau đây có chứa thông tin về công ty được điền sẵn bằng . Tất cả các biến này đều có tiền tố:
verifyapikey.{policy_name}.company
Ví dụ:
verifyapikey.{policy_name}.company.name
Các biến có sẵn bao gồm:
Biến | Mô tả |
---|---|
name |
Tên công ty. |
displayName |
Tên hiển thị của công ty. |
id |
Mã công ty. |
apps |
Một mảng chứa danh sách các ứng dụng của công ty. |
appOwnerStatus |
Trạng thái của chủ sở hữu ứng dụng, là đang hoạt động, không hoạt động hoặc sign_lock.
|
created_at |
Dấu ngày/giờ khi công ty được tạo. |
created_by |
Địa chỉ email của người dùng đã tạo công ty. |
last_modified_at |
Dấu ngày/giờ khi công ty được sửa đổi lần gần đây nhất. |
last_modified_by |
Địa chỉ email của người dùng sửa đổi công ty lần gần đây nhất. |
{company_custom_attributes} |
Thuộc tính tuỳ chỉnh của công ty. Chỉ định tên của thuộc tính tuỳ chỉnh. |
Biến Analytics
Các biến sau đây được tự động điền vào Analytics khi áp dụng chính sách Xác minh khoá API được thực thi cho khoá API hợp lệ. Các biến này chỉ được điền sẵn bằng Khoá API Xác minh và chính sách OAuth.
Các biến và giá trị có thể được dùng làm phương diện để xây dựng báo cáo Analytics nhằm thu được thông tin về mô hình tiêu thụ của nhà phát triển và ứng dụng.
- apiproduct.name
- developer.app.name
- client_id
- developer.id
Tham chiếu 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. Thông tin này rất quan trọng nếu bạn đang phát triển các 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 chính sách và 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 này thực thi.
Mã lỗi | Trạng thái HTTP | Nguyên nhân |
---|---|---|
keymanagement.service.CompanyStatusNotActive |
401 | Công ty liên kết với Ứng dụng của nhà phát triển có khoá API mà bạn đang sử dụng phải trạng thái không hoạt động. Khi trạng thái của Công ty được đặt thành không hoạt động, bạn không thể truy cập vào nhà phát triển hoặc ứng dụng được liên kết với Công ty đó. Quản trị viên tổ chức có thể thay đổi trạng thái của Công ty thông qua API Quản lý. Xem phần Đặt trạng thái của Công ty. |
keymanagement.service.DeveloperStatusNotActive |
401 |
Nhà phát triển tạo ra Ứng dụng dành cho nhà phát triển có khoá API mà bạn đang sử dụng có trạng thái không hoạt động. Khi trạng thái của Nhà phát triển ứng dụng được đặt thành không hoạt động, mọi Ứng dụng của nhà phát triển do nhà phát triển đó tạo ra. Người dùng quản trị có quyền thích hợp (chẳng hạn như Quản trị viên tổ chức) có thể thay đổi trạng thái của nhà phát triển trong các bước sau cách:
|
keymanagement.service.invalid_client-app_not_approved |
401 | Ứng dụng của nhà phát triển liên kết với khoá API sẽ bị thu hồi. Ứng dụng bị thu hồi không thể truy cập vào mọi sản phẩm API và không thể gọi bất kỳ API nào do Apigee Edge quản lý. Quản trị viên tổ chức có thể thay đổi trạng thái của Ứng dụng dành cho nhà phát triển bằng API quản lý. Xem Phê duyệt hoặc thu hồi ứng dụng của nhà phát triển. |
oauth.v2.FailedToResolveAPIKey |
401 | Chính sách này muốn tìm khoá API trong một biến được chỉ định trong chính sách <APIKey> phần tử. Lỗi này phát sinh khi biến không tồn tại (không thể giải quyết). |
oauth.v2.InvalidApiKey |
401 | Edge đã nhận được một khoá API nhưng khoá đó không hợp lệ. Khi Edge tìm kiếm khoá trong cơ sở dữ liệu này phải khớp chính xác với dữ liệu đã được gửi trong yêu cầu. Nếu API hoạt động hãy đảm bảo khoá không được tạo lại. Nếu khoá đã được tạo lại, bạn sẽ thấy lỗi này nếu bạn cố sử dụng khoá cũ. Để biết thông tin chi tiết, hãy xem phần Đăng ký ứng dụng và quản lý API khoá. |
oauth.v2.InvalidApiKeyForGivenResource |
401 | Edge đã nhận được một khoá API và khoá này hợp lệ; Tuy nhiên, nó không phù hợp với khoá được phê duyệt trong Ứng dụng dành cho nhà phát triển được liên kết với proxy API của bạn thông qua một Sản phẩm. |
Lỗi triển khai
Những lỗi này có thể xảy ra khi bạn triển khai proxy có chứa chính sách này.
Tên lỗi | Nguyên nhân |
---|---|
SpecifyValueOrRefApiKey |
Phần tử <APIKey> chưa chỉ định giá trị hoặc khoá. |
Biến lỗi
Các biến này được đặt khi xảy ra lỗi thời gian chạy. Để biết thêm thông tin, hãy xem bài viết Những điều bạn cần biết về lỗi chính sách.
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 "FailedToResolveAPIKey" |
oauthV2.policy_name.failed |
policy_name là tên do người dùng chỉ định của chính sách gây ra lỗi. | oauthV2.VK-VerifyAPIKey.failed = true |
Ví dụ về phản hồi lỗi
{ "fault":{ "faultstring":"Invalid ApiKey", "detail":{ "errorcode":"oauth.v2.InvalidApiKey" } } }
{ "fault":{ "detail":{ "errorcode":"keymanagement.service.DeveloperStatusNotActive" }, "faultstring":"Developer Status is not Active" } }
Ví dụ về quy tắc lỗi
<FaultRule name="FailedToResolveAPIKey"> <Step> <Name>AM-FailedToResolveAPIKey</Name> </Step> <Condition>(fault.name Matches "FailedToResolveAPIKey") </Condition> </FaultRule>