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
Giải mã tiêu đề JWS mà không cần xác minh chữ ký trên JWS và ghi từng tiêu đề vào một biến dòng dữ liệu. Chính sách này hữu ích nhất khi được sử dụng cùng với chính sáchVerifyJWS, khi người dùng phải biết giá trị của tiêu đề trong JWS trước khi xác minh chữ ký của JWS.
JWS có thể có tải trọng được đính kèm, như trong biểu mẫu:
header.payload.signature
Hoặc JWS có thể bỏ qua trọng tải, được gọi là tải trọng phân tách và có dạng như sau:
header..signature
Chính sách Giải mãJWS áp dụng được cho cả hai biểu mẫu vì chính sách này chỉ giải mã phần tiêu đề của JWS. Chính sách Giải mãJWS cũng hoạt động bất kể thuật toán dùng để ký JWS.
Xem bài viết Tổng quan về chính sách JWS và JWT để biết thông tin giới thiệu chi tiết và thông tin tổng quan về định dạng của JWS.
Video
Xem một video ngắn để tìm hiểu cách giải mã JWT. Trong khi video này đang dành riêng cho JWT, nhiều khái niệm cũng giống nhau đối với JWS.
Mẫu: Giải mã JWS
Chính sách hiển thị bên dưới giải mã JWS có trong biến luồng var.JWS. Chiến dịch này biến phải có và chứa một JWS khả thi (có thể phân giải). Chính sách này có thể lấy JWS từ bất kỳ biến luồng nào.
<DecodeJWS name="JWS-Decode-HS256"> <DisplayName>JWS Verify HS256</DisplayName> <Source>var.JWS</Source> </DecodeJWS>
Đối với mỗi tiêu đề trong phần tiêu đề của JWS, chính sách này sẽ đặt một biến luồng có tên như sau:
jws.policy-name.header.header-name
Nếu JWS có tải trọng đính kèm, thì JWS sẽ đặt jws.policy-name.header.payload
cho tải trọng. Đối với tải trọng tách rời, payload
sẽ trống.
Hãy xem bài viết Biến flow để biết danh sách đầy đủ các biến do chính sách này đặt ra.
Tham chiếu phần tử để giải mã JWS
Tài liệu tham khảo chính sách này mô tả các thành phần và thuộc tính của chính sách Giải mã JWS.
Những thuộc tính mà áp dụng cho phần tử cấp cao nhất
<DecodeJWS name="JWS" continueOnError="false" enabled="true" async="false">
Các thuộc tính sau đây áp dụng chung cho tất cả phần tử mẹ của chính sách.
Thuộc tính | Nội dung mô tả | Mặc định | Sự hiện diện |
---|---|---|---|
tên |
Tên nội bộ của chính sách. Bạn chỉ có thể sử dụng các ký tự trong tên này:
A-Z0-9._\-$ % . Tuy nhiên, giao diện người dùng quản lý Edge sẽ thực thi thêm
các hạn chế cụ thể, chẳng hạn như tự động xoá các ký tự không phải là chữ và số.
Bạn có thể dùng phần tử |
Không áp dụng | Bắt buộc |
continueOnError |
Đặt thành false để trả về lỗi khi chính sách không thành công. Điều này là dự kiến
đối với hầu hết các chính sách.
Đặt thành |
false | Không bắt buộc |
đang bật |
Hãy đặt thành true để thực thi chính sách này.
Đặt thành |
đúng | Không bắt buộc |
không đồng bộ | Thuộc tính này không được dùng nữa. | false | Không được dùng nữa |
<DisplayName>
<DisplayName>Policy Display Name</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 ngôn ngữ tự nhiên khác.
Mặc định | Nếu bạn bỏ qua phần tử này, giá trị của thuộc tính tên của chính sách sẽ được sử dụng. |
Sự hiện diện | Không bắt buộc |
Loại | Chuỗi |
<Source>
<Source>JWS-variable</Source>
Nếu có, hãy chỉ định biến luồng mà chính sách dự kiến sẽ tìm JWS giải mã.
Mặc định | request.header.authorization (Xem ghi chú ở trên để biết thông tin quan trọng
về mặc định). |
Sự hiện diện | Không bắt buộc |
Loại | Chuỗi |
Giá trị hợp lệ | Tên biến luồng cạnh |
Flow variables
Upon success, the Verify JWS and Decode JWS policies set context variables according to this pattern:
jws.{policy_name}.{variable_name}
For example, if the policy name is verify-jws
, then the policy will store
the algorithm specified in the JWS to this context variable:
jws.verify-jws.header.algorithm
Variable name | Description |
---|---|
decoded.header.name |
The JSON-parsable value of a header in the payload. One variable is set for
every header in the payload. While you can also use the header.name flow variables,
this is the recommended variable to use to access a header. |
header.algorithm |
The signing algorithm used on the JWS. For example, RS256, HS384, and so on. See (Algorithm) Header Parameter for more. |
header.kid |
The Key ID, if added when the JWS was generated. See also "Using a JSON Web Key Set (JWKS)" at JWT and JWS policies overview to verify a JWS. See (Key ID) Header Parameter for more. |
header.type |
The header type value. See (Type) Header Parameter for more. |
header.name |
The value of the named header (standard or additional). One of these will be set for every additional header in the header portion of the JWS. |
header-json |
The header in JSON format. |
payload |
The JWS payload if the JWS has an attached payload. For a detached payload, this variable is empty. |
valid |
In the case of VerifyJWS, this variable will be true when the signature is verified, and
the current time is before the token expiry, and after the token notBefore value, if they
are present. Otherwise false.
In the case of DecodeJWS, this variable is not set. |
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 đó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 | Xảy ra khi |
---|---|---|
steps.jws.FailedToDecode |
401 | Chính sách không thể giải mã JWS. JWS có thể bị hỏng. |
steps.jws.FailedToResolveVariable |
401 | Xảy ra khi biến luồng được chỉ định trong phần tử <Source> của
chính sách không tồn tại. |
steps.jws.InvalidClaim |
401 | Đối với thông báo xác nhận quyền sở hữu bị thiếu hoặc không khớp hoặc thiếu tiêu đề hoặc tiêu đề không khớp. |
steps.jws.InvalidJsonFormat |
401 | Tìm thấy JSON không hợp lệ trong tiêu đề JWS. |
steps.jws.InvalidJws |
401 | Lỗi này xảy ra khi không xác minh được chữ ký JWS. |
steps.jws.InvalidPayload |
401 | Tải trọng JWS không hợp lệ. |
steps.jws.InvalidSignature |
401 | <DetachedContent> bị bỏ qua và JWS có tải trọng nội dung tách rời. |
steps.jws.MissingPayload |
401 | Thiếu tải trọng JWS. |
steps.jws.NoAlgorithmFoundInHeader |
401 | Xảy ra khi JWS bỏ qua tiêu đề thuật toán. |
steps.jws.UnknownException |
401 | Đã xảy ra ngoại lệ không xác định. |
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 | Xảy ra khi |
---|---|
InvalidAlgorithm |
Các giá trị hợp lệ duy nhất là: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512. |
|
Các lỗi triển khai khác có thể xảy ra. |
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 "TokenExpired" |
JWS.failed |
Tất cả các chính sách JWS đều đặt cùng một biến trong trường hợp có lỗi. | jws.JWS-Policy.failed = true |
Ví dụ về phản hồi khi gặp lỗi
Để xử lý lỗi, phương pháp hay nhất là bẫy phần errorcode
của lỗi
của bạn. Đừng dựa vào văn bản trong faultstring
vì văn bản này có thể thay đổi.
Ví dụ về quy tắc lỗi
<FaultRules> <FaultRule name="JWS Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "TokenExpired")</Condition> </Step> <Condition>JWS.failed=true</Condition> </FaultRule> </FaultRules>