Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Giới thiệu về chính sách OASValidation (Xác thực OASValidation)
Chính sách OASValidation (Xác thực thông số kỹ thuật OpenAPI) cho phép bạn xác thực yêu cầu đến hoặc thông báo phản hồi dựa trên Thông số kỹ thuật OpenAPI 3.0 (JSON hoặc YAML). Xem phần Nội dung nào được xác thực?
Chính sách OASValidation (Xác thực OASValidation) chỉ định tên của Quy cách OpenAPI để dùng cho việc xác thực khi bước mà chính sách được đính kèm vào.
Thông số OpenAPI được lưu trữ dưới dạng tài nguyên ở vị trí tiêu chuẩn sau đây trong gói proxy API: apiproxy/resources/oas
.
Thông số kỹ thuật OpenAPI phải có phần mở rộng .json
, .yml
, .yaml
.
Thêm một Thông số kỹ thuật OpenAPI dưới dạng tài nguyên vào gói proxy API bằng cách sử dụng giao diện người dùng hoặc API, như mô tả trong phần Quản lý tài nguyên.
Nội dung nào được xác thực?
Bảng sau đây tóm tắt nội dung thông báo yêu cầu mà chính sách OASValidation xác thực theo thành phần.
Thành phần | Yêu cầu xác thực |
---|---|
Đường dẫn cơ sở | Xác thực đường dẫn cơ sở được proxy API xác định; bỏ qua đường dẫn cơ sở được chỉ định trong Thông số kỹ thuật OpenAPI. |
Đường dẫn | Kiểm tra xem đường dẫn yêu cầu (trừ đường dẫn cơ sở) khớp với một trong các mẫu đường dẫn được xác định trong Thông số kỹ thuật OpenAPI. |
Động từ | Xác thực rằng động từ đó đã được xác định cho đường dẫn trong Thông số kỹ thuật OpenAPI. |
Nội dung yêu cầu tin nhắn |
Lưu ý: Chính sách này chỉ xác thực nội dung thông báo yêu cầu theo Thông số kỹ thuật OpenAPI chỉ khi Content-Type được đặt thành
|
Tham số |
|
Bảng sau đây tóm tắt nội dung thông báo phản hồi mà chính sách OASValidation xác thực theo thành phần.
Thành phần | Xác thực phản hồi |
---|---|
Đường dẫn | Kiểm tra xem đường dẫn yêu cầu (trừ đường dẫn cơ sở) khớp với một trong các mẫu đường dẫn được xác định trong Thông số kỹ thuật OpenAPI. |
Động từ | Xác thực rằng động từ đó đã được xác định cho đường dẫn trong Thông số kỹ thuật OpenAPI. |
Nội dung thư phản hồi |
|
Mẫu
Các ví dụ sau đây trình bày một số cách sử dụng OASValidation để xác thực thông báo theo Thông số kỹ thuật OpenAPI 3.0.
Xác thực thông báo yêu cầu
Trong ví dụ sau, chính sách myoaspolicy
xác thực nội dung của thông báo yêu cầu dựa trên
giản đồ nội dung thông báo yêu cầu của thao tác được xác định trong Thông số kỹ thuật OpenAPI my-spec.json
.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.json</OASResource> <Options> <ValidateMessageBody>true</ValidateMessageBody> </Options> <Source>request</Source> </OASValidation>
Nếu nội dung thông báo không tuân thủ thông số kỹ thuật OpenAPI, thì hệ thống sẽ trả về lỗi policies.oasvalidation.Failed
.
Xác thực thông số
Ví dụ sau đây định cấu hình chính sách không thành công nếu tham số tiêu đề, truy vấn hoặc cookie được chỉ định trong yêu cầu không được xác định trong Thông số kỹ thuật OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> <Query>false</Query> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<OASValidation>
phần tử
Xác định chính sách Xác thực thông số kỹ thuật OpenAPI.
Giá trị mặc định | Xem thẻ Chính sách mặc định bên dưới |
Bắt buộc? | Bắt buộc |
Loại | Đối tượng phức tạp |
Phần tử mẹ | không áp dụng |
Phần tử con |
<DisplayName> <OASResource> <Source> <Options> <Source> |
Cú pháp
Phần tử <OASValidation>
sử dụng cú pháp sau:
<OASValidation continueOnError="[true|false]" enabled="[true|false]" name="policy_name" > <!-- All OASValidation child elements are optional except OASResource --> <DisplayName>policy_display_name</DisplayName> <OASResource>validation_JSON_or_YAML</OASResource> <Options> <ValidateMessageBody>[true|false]</ValidateMessageBody> <AllowUnspecifiedParameters> <Header>[true|false]</Header> <Query>[true|false]</Query> <Cookie>[true|false]</Cookie> </AllowUnspecifiedParameters> </Options> <Source>message_to_validate</Source> </OASValidation>
Chính sách mặc định
Ví dụ sau đây cho thấy các chế độ cài đặt mặc định khi bạn thêm chính sách Xác thực OAS vào quy trình của bạn trong giao diện người dùng Apigee:
<OASValidation continueOnError="false" enabled="true" name="OpenAPI-Spec-Validation-1"> <DisplayName>OpenAPI Spec Validation-1</DisplayName> <Properties/> <Source>request</Source> <OASResource>oas://OpenAPI-Spec-Validation-1.yaml</OASResource> </OASValidation>
Phần tử này có các thuộc tính chung cho tất cả các chính sách:
Thuộc tính | Mặc định | Bắt buộc? | Nội dung mô tả |
---|---|---|---|
name |
Không áp dụng | Bắt buộc |
Tên nội bộ của chính sách. Giá trị của thuộc tính Nếu muốn, hãy sử dụng phần tử |
continueOnError |
sai | Không bắt buộc | Đặt thành "false" để trả về lỗi khi một chính sách không thành công. Đây là hành vi dự kiến đối với hầu hết các chính sách. Đặt thành "true" để tiếp tục thực thi luồng ngay cả sau khi chính sách không hoạt động. |
enabled |
true | Không bắt buộc | Đặt thành "true" để thực thi chính sách này. Đặt thành "false" để "tắt" chính sách này. Chính sách sẽ không được thực thi ngay cả khi vẫn được liên kết với một luồng. |
async |
sai | Không được dùng nữa | Thuộc tính này không còn được dùng nữa. |
Tham chiếu phần tử con
Phần này mô tả các phần tử con của <OASValidation>
.
<DisplayName>
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ý với một cái tên khác, nghe tự nhiên hơn.
Phần tử <DisplayName>
áp dụng chung cho mọi chính sách.
Giá trị mặc định | không áp dụng |
Bắt buộc? | Không bắt buộc. Nếu bạn bỏ qua <DisplayName> , giá trị của
Thuộc tính name của chính sách được dùng |
Loại | Chuỗi |
Phần tử mẹ | <PolicyElement> |
Phần tử con | Không có |
Phần tử <DisplayName>
sử dụng cú pháp sau:
Cú pháp
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
Ví dụ:
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
Phần tử <DisplayName>
không có thuộc tính hoặc phần tử con.
<OASResource>
Chỉ định thông số kỹ thuật OpenAPI để xác thực. Bạn có thể lưu trữ tệp này:
- Ở phạm vi proxy API trong
/apiproxy/resources/oas
trong gói proxy API - Trong phần
Resources
ở chế độ xem Navigator của trình chỉnh sửa proxy API.
Để biết thêm thông tin, hãy xem phần Quản lý tài nguyên.
Bạn có thể chỉ định Thông số kỹ thuật OpenAPI bằng mẫu thông báo, chẳng hạn như {oas.resource.url}
.
Trong trường hợp này, giá trị của biến luồng oas.resource.url
(trong dấu ngoặc nhọn) sẽ được đánh giá
và được thay thế vào chuỗi tải trọng trong thời gian chạy.
Để biết thêm thông tin, hãy xem phần Mẫu tin nhắn.
Giá trị mặc định | Không có |
Bắt buộc? | Bắt buộc |
Loại | Chuỗi |
Phần tử mẹ |
<OASValidation>
|
Phần tử con | Không có |
Cú pháp
Phần tử <OASResource>
sử dụng cú pháp sau:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> ... </OASValidation>
Ví dụ:
Ví dụ sau đây tham chiếu đến quy cách my-spec.yaml
được lưu trữ trong /apiproxy/resources/oas
trong gói proxy API:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> </OASValidation>
Phần tử <OASResource>
không có thuộc tính hoặc phần tử con.
<Options>
Định cấu hình các tuỳ chọn cho chính sách.
Giá trị mặc định | không áp dụng |
Bắt buộc? | Không bắt buộc |
Loại | Loại phức tạp |
Phần tử mẹ |
<OASValidation>
|
Phần tử con |
<ValidateMessageBody> <AllowUnspecifiedParameters> |
Cú pháp
Phần tử <Options>
sử dụng cú pháp sau:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <ValidateMessageBody>[true|false]</ValidateMessageBody> <AllowUnspecifiedParameters> <Header>[true|false]</Header> <Query>[true|false]</Query> <Cookie>[true|false]</Cookie> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Ví dụ:
Ví dụ sau đây định cấu hình các tuỳ chọn cho chính sách này. Mỗi tuỳ chọn được mô tả chi tiết hơn bên dưới.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <ValidateMessageBody>false</ValidateMessageBody> <AllowUnspecifiedParameters> <Header>false</Header> <Query>false</Query> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<ValidateMessageBody>
Chỉ định xem chính sách có xác thực nội dung thông báo theo giản đồ nội dung yêu cầu của thao tác trong Thông số kỹ thuật OpenAPI hay không. Đặt thành true để xác thực nội dung nội dung thư. Đặt thành false (sai) để chỉ xác thực rằng nội dung thông báo tồn tại.
Bạn có thể kiểm soát việc có tiếp tục thực thi luồng hay không sau khi xảy ra lỗi xác thực bằng cách đặt thuộc tính continueOnError
cho <OASValidation>
thành true.
Giá trị mặc định | false |
Bắt buộc? | Không bắt buộc |
Loại | Boolean |
Phần tử mẹ |
<Options>
|
Phần tử con | Không có |
Cú pháp
Phần tử <ValidateMessageBody>
sử dụng cú pháp sau:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <ValidateMessageBody>[true|false]</ValidateMessageBody> </Options> ... </OASValidation>
Ví dụ:
Ví dụ sau đây cho phép xác thực nội dung thư:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <ValidateMessageBody>true</ValidateMessageBody> </Options> </OASValidation>
<AllowUnspecifiedParameters>
Định cấu hình hành vi của chính sách nếu có tham số tiêu đề, truy vấn hoặc cookie có trong yêu cầu không được xác định trong Thông số kỹ thuật OpenAPI.
Giá trị mặc định | không áp dụng |
Bắt buộc? | Không bắt buộc |
Loại | Loại phức tạp |
Phần tử mẹ |
<Options>
|
Phần tử con |
<Header> <Query> <Cookie> |
Cú pháp
Phần tử <AllowUnspecifiedParameters>
sử dụng cú pháp sau:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Header>[true|false]</Header> <Query>[true|false]</Query> <Cookie>[true|false]</Cookie> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Ví dụ:
Ví dụ sau đây định cấu hình chính sách không thành công nếu tham số tiêu đề, truy vấn hoặc cookie được chỉ định trong yêu cầu không được xác định trong Thông số kỹ thuật OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> <Query>false</Query> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Header>
(con của <AllowUnspecifiedParameters>
)
Định cấu hình hoạt động của chính sách nếu có tham số tiêu đề có trong yêu cầu không được xác định trong Thông số kỹ thuật OpenAPI.
Để cho phép chỉ định tham số tiêu đề trong yêu cầu nhưng không được xác định trong Thông số kỹ thuật OpenAPI, đặt thông số này thành true. Nếu không, hãy đặt tham số này thành false để khiến việc thực thi chính sách không thành công.
Giá trị mặc định | đúng |
Bắt buộc? | Boolean |
Loại | Loại phức tạp |
Phần tử mẹ |
<AllowUnspecifiedParameters>
|
Phần tử con | Không có |
Cú pháp
Phần tử <Header>
sử dụng cú pháp sau:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Header>[true|false]</Header> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Ví dụ:
Ví dụ sau đây định cấu hình chính sách không thành công nếu tham số tiêu đề được chỉ định trong yêu cầu không được xác định trong Thông số kỹ thuật OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Query>
(con của <AllowUnspecifiedParameters>
)
Định cấu hình hành vi của chính sách nếu có tham số truy vấn có trong yêu cầu không được xác định trong Thông số kỹ thuật OpenAPI.
Để cho phép chỉ định các tham số truy vấn trong yêu cầu mà không được xác định trong Thông số kỹ thuật OpenAPI, đặt thông số này thành true. Nếu không, hãy đặt tham số này thành false để khiến việc thực thi chính sách không thành công.
Giá trị mặc định | đúng |
Bắt buộc? | Boolean |
Loại | Loại phức tạp |
Phần tử mẹ |
<AllowUnspecifiedParameters>
|
Phần tử con | Không có |
Cú pháp
Phần tử <Query>
sử dụng cú pháp sau:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Query>[true|false]</Query> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Ví dụ:
Ví dụ sau đây định cấu hình chính sách không thành công nếu một tham số truy vấn được chỉ định trong yêu cầu không được xác định trong Thông số kỹ thuật OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Query>false</Query> </AllowUnspecifiedParameters> </Options> </OASValidation>
Định cấu hình hành vi của chính sách nếu có tham số cookie có trong yêu cầu không được xác định trong Thông số kỹ thuật OpenAPI.
Để cho phép chỉ định tham số cookie trong yêu cầu nhưng không được xác định trong Thông số kỹ thuật OpenAPI, đặt thông số này thành true. Nếu không, hãy đặt tham số này thành false để khiến việc thực thi chính sách không thành công.
Giá trị mặc định | đúng |
Bắt buộc? | Boolean |
Loại | Loại phức tạp |
Phần tử mẹ |
<AllowUnspecifiedParameters>
|
Phần tử con | Không có |
Cú pháp
Phần tử <Cookie>
sử dụng cú pháp sau:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Query>[true|false]</Query> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Ví dụ:
Ví dụ sau đây định cấu hình chính sách không thành công nếu một tham số truy vấn được chỉ định trong yêu cầu không được xác định trong Thông số kỹ thuật OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Source>
Thông báo JSON sẽ được đánh giá dựa trên các cuộc tấn công tải trọng JSON. Thường được đặt thành
request
, vì bạn thường cần đánh giá các yêu cầu đến từ ứng dụng khách.
Đặt thành phản hồi để đánh giá tin nhắn phản hồi.
Đặt thành thông báo để tự động đánh giá thông báo trong yêu cầu
khi chính sách này được đính kèm vào quy trình yêu cầu và thông báo phản hồi, khi chính sách này được đính kèm vào phản hồi
luồng.
Giá trị mặc định | request |
Bắt buộc? | Không bắt buộc |
Loại | Chuỗi |
Phần tử mẹ |
<Source>
|
Phần tử con | Không có |
Cú pháp
Phần tử <Source>
sử dụng cú pháp sau:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Source>[message|request|response]</Source> ... </OASValidation>
Ví dụ:
Ví dụ sau đây sẽ tự động đánh giá thông báo yêu cầu khi chính sách này được đính kèm vào quy trình yêu cầu và thông báo phản hồi khi chính sách này được đính kèm vào quy trình phản hồi:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Source>message</Source> </OASValidation>
Phần tử <Source>
không có thuộc tính hoặc phần tử con.
Giản đồ
Mỗi loại chính sách được xác định bằng một giản đồ XML (.xsd
). Giản đồ chính sách để tham khảo
đều có trên GitHub.
Mã 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 đóng vai trò quan trọng trong việc phát triển các quy tắc lỗi để xử lý lỗi. Để tìm hiểu thêm, hãy xem 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 thực thi chính sách.
Mã lỗi | Trạng thái HTTP | Nguyên nhân | |
---|---|---|---|
steps.oasvalidation.Failed |
500 | Không thể xác thực nội dung thông báo yêu cầu theo Thông số kỹ thuật OpenAPI được cung cấp. | |
steps.oasvalidation.SourceMessageNotAvailable |
500 |
Biến được chỉ định trong phần tử |
|
steps.oasvalidation.NotMessageVariable |
500 |
Phần tử |
build |
Lỗi triển khai
Những lỗi này có thể xảy ra khi bạn triển khai proxy chứa chính sách này.
Tên lỗi | Nguyên nhân | |
---|---|---|
ResourceDoesNotExist |
Thông số kỹ thuật OpenAPI được tham chiếu trong phần tử <OASResource> không tồn tại.
|
|
ResourceCompileFailed |
Thông số kỹ thuật OpenAPI được bao gồm trong quá trình triển khai có lỗi ngăn cản quá trình biên dịch. Điều này thường cho thấy rằng thông số kỹ thuật này không phải là Thông số kỹ thuật OpenAPI 3.0 được định dạng đúng. | |
BadResourceURL |
Không xử lý được Thông số kỹ thuật OpenAPI được tham chiếu trong phần tử <OASResource> . Điều này có thể xảy ra nếu tệp đó không phải là tệp JSON hoặc YAML hoặc URL tệp không được chỉ định chính xác.
|
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ế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ư 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 "ResourceDoesNotExist" |
oasvalidation.policy_name.failed |
policy_name là tên của chính sách báo lỗi do người dùng chỉ định. | oasvalidation.myoaspolicy.failed = true |
Các tính năng được hỗ trợ của Thông số kỹ thuật OpenAPI
Chính sách OASValidation hỗ trợ các tính năng trong Thông số kỹ thuật OpenAPI được tóm tắt trong bảng sau theo danh mục. Danh sách các tính năng không được hỗ trợ cũng có trong danh sách.
Danh mục | Có thể làm | Không thể làm |
---|---|---|
Định dạng loại dữ liệu | boolean ngày ngày giờ gấp đôi số thực int32/int64 ipv4/ipv6 md5 sha1/sha256/sha512 chuỗi URI uri-template uuid |
nhị phân byte mật khẩu |
Đối tượng phân biệt đối xử | liên kết propertyName |
Không áp dụng |
Đối tượng loại nội dung nghe nhìn | giản đồ | mã hoá ví dụ ví dụ |
Đối tượng hoạt động | tham số requestBody phản hồi bảo mật (hỗ trợ một phần) |
lệnh gọi lại không dùng nữa máy chủ |
Đối tượng Parameters (thông số) | allowEmptyValue trong ( query , header , path )bắt buộc phản hồi giản đồ kiểu ( deepObject , form , formmatrix , label , pipeDelimited , simple , spaceDelimited )Lưu ý: deepObject chỉ hỗ trợ các tham số chuỗi; mảng và đối tượng lồng nhau không được hỗ trợ.
|
allowReserved không dùng nữa ví dụ ví dụ kiếm nhiều tiền nhất |
Đối tượng đường dẫn | xoá tải đầu lựa chọn tham số bản vá bài đăng đặt dấu vết biến |
máy chủ |
Yêu cầu đối tượng nội dung | application/json application/hal+json ứng dụng/x-www-form-urlcoded (không hỗ trợ đối tượng encoding )nội dung bắt buộc |
ứng dụng/xml multipart/form-data văn bản/đơn thuần văn bản/xml |
Đối tượng phản hồi | application/json application/hal+json ứng dụng/x-www-form-urlcoded (không hỗ trợ đối tượng encoding )nội dung tiêu đề |
ứng dụng/xml đường liên kết văn bản/đơn thuần văn bản/xml |
Đối tượng phản hồi | mặc định Mã trạng thái HTTP |
Không áp dụng |
Đối tượng giản đồ | $ref additionalProperties (chỉ dành cho biến thể gắn cờ boolean) allOf (bỏ qua nếu additionalProperties là false )anyOf enum exclusiveMaximum/exclusiveMinimum định dạng mục tối đa/tối thiểu tối đa mục/danh mục tối thiểu maxLength/minLength maxProperties/minProperties multipleOf không phải rỗng oneOf mẫu thuộc tính bắt buộc tiêu đề loại uniqueItems |
không dùng nữa ví dụ readOnly writeOnly XML |
Đối tượng lược đồ bảo mật | trong (header , query ) (bỏ qua nếu type là http )tên loại ( apiKey , http )
|
bearerFormat luồng openIdConnectUrl lược đồ |
Đối tượng máy chủ | url biến |
Nhiều định nghĩa máy chủ |