{"id":9699,"date":"2014-04-15T13:57:45","date_gmt":"2014-04-15T18:57:45","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=9699"},"modified":"2014-04-15T13:57:45","modified_gmt":"2014-04-15T18:57:45","slug":"layer-7-policy-authoring","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=9699","title":{"rendered":"Layer 7 Policy Authoring"},"content":{"rendered":"<div class='toc wptoc'>\n<h2>Contents<\/h2>\n<ol class='toc-odd level-1'>\n\t<li>\n\t\t<a href=\"#Policy_Fragments\">Policy Fragments<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Overview\">Overview<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_Policy_Fragment_to_Service_Policy\">Add Policy Fragment to Service Policy<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Policy_Assertions\">Policy Assertions<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Overview_1\">Overview<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Assertion_Categories\">Assertion Categories<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Making_Kerberos_Configuration\">Making Kerberos Configuration<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Access_Control_Assertions\">Access Control Assertions<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Authenticate_Against_Identity_Provider\">Authenticate Against Identity Provider<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Authenticate_User_or_Group\">Authenticate User or Group<\/a>\n\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Authenticate_Against_a_Simple_LDAP_IdP\">Authenticate Against a Simple LDAP IdP<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t<\/ol>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Exchange_Credentials_using_WS-Trust_Assertion\">Exchange Credentials using WS-Trust Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Extract_Attributes_from_Certificate_Assertion\">Extract Attributes from Certificate Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Extract_Attributes_for_Authenticated_User_Assertion\">Extract Attributes for Authenticated User Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Perform_JDBC_Query_Assertion\">Perform JDBC Query Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Query_LDAP_Assertion\">Query LDAP Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_Encrypted_UsernameToken_Profile_Credentials_Assertion\">Require Encrypted UsernameToken Profile Credentials Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_FTP_Credentials_Assertion\">Require FTP Credentials Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_HTTP_Basic_Credentials_Assertion\">Require HTTP Basic Credentials Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_HTTP_Cookie_Assertion\">Require HTTP Cookie Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_Remote_Domain_Identity_Assertion\">Require Remote Domain Identity Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_SAML_Token_Profile_Assertion\">Require SAML Token Profile Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_SSH_Credentials_Assertion\">Require SSH Credentials Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_SSL_or_TLS_Transport_with_Client_Authentication_Assertion\">Require SSL or TLS Transport with Client Authentication Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_Windows_Integrated_Authentication_Credentials_Assertion\">Require Windows Integrated Authentication Credentials Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_WS-Secure_Conversation_Assertion\">Require WS-Secure Conversation Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_WS-Security_Kerberos_Token_Profile_Credentials_Assertion\">Require WS-Security Kerberos Token Profile Credentials Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_WS-Security_Password_Digest_Credentials_Assertion\">Require WS-Security Password Digest Credentials Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_WS-Security_Signature_Credentials_Assertion\">Require WS-Security Signature Credentials Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_WS-Security_UsernameToken_Profile_Credentials_Assertion\">Require WS-Security UsernameToken Profile Credentials Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_XPath_Credentials_Assertion\">Require XPath Credentials Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Retrieve_Credentials_from_Context_Variable_Assertion\">Retrieve Credentials from Context Variable Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Retrieve_SAML_Browser_Artifact_Assertion\">Retrieve SAML Browser Artifact Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Use_WS-Federation_Credential_Assertion\">Use WS-Federation Credential Assertion<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Transport_Layer_Security_Assertions\">Transport Layer Security Assertions<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_SSL_or_TLS_Transport_Assertion\">Require SSL or TLS Transport Assertion<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#XML_Security_Assertions\">XML Security Assertions<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_or_Remove_WS-Security_Assertion\">Add or Remove WS-Security Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_Security_Token_Assertion\">Add Security Token Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_Timestamp_Assertion\">Add Timestamp Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_WS-Security_UsernameToken_Assertion\">Add WS-Security UsernameToken Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Build_RST_SOAP_Request_Assertion\">Build RST SOAP Request Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Build_RSTR_SOAP_Response_Assertion\">Build RSTR SOAP Response Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Build_SAML_Protocol_Request_Assertion\">Build SAML Protocol Request Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#SAML_Protocol_Request_Wizard\">SAML Protocol Request Wizard<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Build_SAML_Protocol_Response_Assertion\">Build SAML Protocol Response Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Cancel_Security_Context_Assertion\">Cancel Security Context Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Configure_WS-Security_Decoration_Assertion\">Configure WS-Security Decoration Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Create_SAML_Token_Assertion\">Create SAML Token Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Create_Security_Context_Token_Assertion\">Create Security Context Token Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Create_XACML_Request_Assertion\">Create XACML Request Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Encrypt_Element_Assertion\">Encrypt Element Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Establish_Outbound_Secure_Conversation_Assertion\">Establish Outbound Secure Conversation Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Evaluate_SAML_Protocol_Response_Assertion\">Evaluate SAML Protocol Response Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Evaluate_XACML_Policy_Assertion\">Evaluate XACML Policy Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Lookup_Outbound_Secure_Conversation_Assertion\">Lookup Outbound Secure Conversation Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Lookup_Trusted_Certificate_Assertion\">Lookup Trusted Certificate Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Non-SOAPCheck_Results_from_XML_Verification_Assertion\">(Non-SOAP)Check Results from XML Verification Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Non-SOAPDecrypt_XML_element_Assertion\">(Non-SOAP)Decrypt XML element Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Non-SOAPEncrypt_XML_Element_Assertion\">(Non-SOAP)Encrypt XML Element Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Non-SOAPSign_XML_Element_Assertion\">(Non-SOAP)Sign XML Element Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Non-SOAPVerify_XML_Element_Assertion\">(Non-SOAP)Verify XML Element Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Process_RSTR_Response_Assertion\">Process RSTR Response Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Protect_Against_Message_Replay_Assertion\">Protect Against Message Replay Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_Encrypted_Element_Assertion\">Require Encrypted Element Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_Signed_Element_Assertion\">Require Signed Element Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Require_Timestamp_Assertion\">Require Timestamp Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Sign_Element_Assertion\">Sign Element Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Use_WS-Security_1.1_Assertion\">Use WS-Security 1.1 Assertion<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Message_Routing_Assertions\">Message Routing Assertions<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_Header_Assertion\">Add Header Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Copy_Request_Message_to_Response_Assertion\">Copy Request Message to Response Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Return_Template_Response_to_Requestor_Assertion\">Return Template Response to Requestor Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Route_via_FTPS_Assertion\">Route via FTP(S) Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Route_via_HTTPS_Assertion\">Route via HTTP(S) Assertion<\/a>\n\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Target_Tab\">Target Tab<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Security_Tab\">Security Tab<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Request_HTTP_Rules_Tab\">Request HTTP Rules Tab<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Response_HTTP_Rules_Tab\">Response HTTP Rules Tab<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Proxy_Tab\">Proxy Tab<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t<\/ol>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Route_via_JMS_Assertion\">Route via JMS Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Route_via_MQ_Native\">Route via MQ Native<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Route_via_Raw_TCP\">Route via Raw TCP<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Route_via_SecureSpan_Bridge\">Route via SecureSpan Bridge<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Route_via_SSH2\">Route via SSH2<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Logging_Auditing_and_Alerts_Assertions\">Logging, Auditing, and Alerts Assertions<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Message_Auditing\">Message Auditing<\/a>\n\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#System_Audits\">System Audits<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Admin_Audits\">Admin Audits<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Policy_Message_Audits\">Policy Message Audits<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Expand_the_Scope_of_Policy_Message_Audits_for_Troubleshooting\">Expand the Scope of Policy Message Audits for Troubleshooting<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t<\/ol>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_Audit_Detail_Assertion\">Add Audit Detail Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Audit_Messages_in_Policy_Assertion\">Audit Messages in Policy Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Capture_Identity_of_Requestor_Assertion\">Capture Identity of Requestor Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Customize_SOAP_Fault_Response_Assertion\">Customize SOAP Fault Response Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Send_Email_Alert_Assertion\">Send Email Alert Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Send_SNMP_Trap\">Send SNMP Trap<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Policy_Logic_Assertions\">Policy Logic Assertions<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Threat_Protection_Assertions\">Threat Protection Assertions<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Automatic_Threat_Protection\">Automatic Threat Protection<\/a>\n\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Protections\">Protections<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t<\/ol>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Limit_Message_Size_Assertion\">Limit Message Size Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Protect_Against_Code_Injection_Assertion\">Protect Against Code Injection Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Protect_Against_Cross-Site_Request_Forgery_CSRF\">Protect Against Cross-Site Request Forgery (CSRF)<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Protect_Against_Document_Structure_Threats_Assertion\">Protect Against Document Structure Threats Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Protect_Against_Message_Replay_Assertion_1\">Protect Against Message Replay Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Protect_Against_SQL_Attack_Assertion\">Protect Against SQL Attack Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Scan_Using_ICAP-Enabled_Antivirus_Assertion\">Scan Using ICAP-Enabled Antivirus Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Validate_JSON_Schema_Assertion\">Validate JSON Schema Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Validate_or_Change_Content_Type_Assertion\">Validate or Change Content Type Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Validate_XML_Schema_Assertion\">Validate XML Schema Assertion<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Internal_Assertions\">Internal Assertions<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Collect_WSDM_Metrics_Assertion\">Collect WSDM Metrics Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Convert_Audit_Record_to_XML_Assertion\">Convert Audit Record to XML Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Handle_UDDI_Subscription_Notification_Assertion\">Handle UDDI Subscription Notification Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Manage_Gateway_Assertion\">Manage Gateway Assertion<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Subscribe_to_WSDM_Resource_Assertion\">Subscribe to WSDM Resource Assertion<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#References\">References<\/a>\n\t<\/li>\n<\/ol>\n<\/ol>\n<\/div>\n<div class='wptoc-end'>&nbsp;<\/div>\n<span id=\"Policy_Fragments\"><h2>Policy Fragments<\/h2><\/span>\n<span id=\"Overview\"><h3>Overview<\/h3><\/span>\n<p>* Used to group assertions<br \/>\n* Can be used in any published service<br \/>\n* Two types of policy fragments:<br \/>\n&#8211; included policy fragments: need to be manually included in service policy<br \/>\n&#8211; global policy fragments: will run at predefined points, will not show in service policy<br \/>\n* Tasks:<br \/>\n&#8211; create a new policy fragment<\/p>\n<span id=\"\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_createPolicyFragment_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_createPolicyFragment_1-300x163.jpg\" alt=\"layer7_policy_createPolicyFragment_1\" width=\"300\" height=\"163\" class=\"aligncenter size-medium wp-image-9805\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_createPolicyFragment_1-300x163.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_createPolicyFragment_1.jpg 368w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; policy fragment revisions<\/p>\n<span id=\"_1\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_PolicyFragment_revision_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_PolicyFragment_revision_1-300x300.jpg\" alt=\"layer7_policy_PolicyFragment_revision_1\" width=\"300\" height=\"300\" class=\"aligncenter size-medium wp-image-9806\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_PolicyFragment_revision_1-300x300.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_PolicyFragment_revision_1-150x150.jpg 150w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_PolicyFragment_revision_1.jpg 313w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_2\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_PolicyFragment_revision_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_PolicyFragment_revision_2-300x199.jpg\" alt=\"layer7_policy_PolicyFragment_revision_2\" width=\"300\" height=\"199\" class=\"aligncenter size-medium wp-image-9808\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_PolicyFragment_revision_2-300x199.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_PolicyFragment_revision_2.jpg 615w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; add a policy fragment to a policy<br \/>\n&#8211; delete a policy fragment<br \/>\n&#8211; edit a policy fragment<br \/>\n* Tips<br \/>\n&#8211; policy fragments are listed in the Services and Policies list<br \/>\n&#8211; can import items from a policy template into a fragment<br \/>\n&#8211; can <strong>not<\/strong> import items from UDDI registry<br \/>\n&#8211; you can drag and drop one fragment into another (<em>fragment composition<\/em>)<br \/>\n&#8211; policy fragments have their own <em>revision history<\/em><br \/>\n&#8211; If the fragment contains assertions that create custom context variables and these variables will be referenced in an including policy, ensure that a Export Variables from Fragment assertion is added to the fragment.<br \/>\n&#8212; An example of assertions that create context variables are the XPath-based assertions (Evaluate Request XPath or Evaluate Response XPath).<\/p>\n<span id=\"Add_Policy_Fragment_to_Service_Policy\"><h3>Add Policy Fragment to Service Policy<\/h3><\/span>\n<p>* Open target service policy<br \/>\n* Drag and drop <em>Include Policy Fragment<\/em> assertion to desired position within service policy<\/p>\n<span id=\"Policy_Assertions\"><h2>Policy Assertions<\/h2><\/span>\n<span id=\"Overview_1\"><h3>Overview<\/h3><\/span>\n<p>* A policy defines restrictions for the consumption of a published service that is protected by the Gateway<br \/>\n* Policy assertions are building blocks for policies<\/p>\n<span id=\"Assertion_Categories\"><h3>Assertion Categories<\/h3><\/span>\n<p>* Access Control<br \/>\n* Transport Layer Security<br \/>\n* XML Security<br \/>\n* Message Validation\/Transformation<br \/>\n* Message Routing<br \/>\n* Service Availability<br \/>\n* Logging, Auditing, and Alerts<br \/>\n* Policy Logic<br \/>\n* Threat Protection<br \/>\n* Internal Assertions<br \/>\n* Custom Assertions<br \/>\n* Policy Templates: contains exported policies<\/p>\n<span id=\"Making_Kerberos_Configuration\"><h3>Making Kerberos Configuration<\/h3><\/span>\n<p>* Generate a keytab file for Layer 7. See <a href=\"?p=9701\">here<\/a><br \/>\n* Open <em>Tasks > Manage Cluster-Wide Properties<\/em> and set <em>krb5.kdc<\/em> to target KDC IP address<\/p>\n<span id=\"_3\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_specifyKDC_3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_specifyKDC_3-300x300.jpg\" alt=\"layer7_policy_authoring_loadKeytab_specifyKDC_3\" width=\"300\" height=\"300\" class=\"aligncenter size-medium wp-image-9707\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_specifyKDC_3-300x300.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_specifyKDC_3-150x150.jpg 150w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_specifyKDC_3.jpg 555w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Open <em>Tasks > Manage Kerberos Configuration<\/em><br \/>\n* Click <em>Load Keytab<\/em> button<br \/>\n* Browse to keytab file, e.g. <strong>layer7.keytab<\/strong><\/p>\n<span id=\"_4\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_1-300x137.jpg\" alt=\"layer7_policy_authoring_loadKeytab_1\" width=\"300\" height=\"137\" class=\"aligncenter size-medium wp-image-9705\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_1-300x137.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_1.jpg 600w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Loaded:<\/p>\n<span id=\"_5\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_2-300x136.jpg\" alt=\"layer7_policy_authoring_loadKeytab_2\" width=\"300\" height=\"136\" class=\"aligncenter size-medium wp-image-9716\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_2-300x136.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_loadKeytab_2.jpg 597w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Error: Could not login &#8216;Clock skew too great (37)&#8217;<br \/>\n&#8211; This is due to time sync off between Layer 7 and domain controller<br \/>\n&#8211; Solution:<br \/>\n&#8212; Setup NTP client on Layer 7 to use domain controller NTP server (ssh to gateway, select 1: Configure system settings, then 1: Configure networking and system time settings)<br \/>\n&#8212; Increase <em>Maximum tolerance for computer clock synchronization<\/em> setting in domain controller<\/p>\n<span id=\"Access_Control_Assertions\"><h2>Access Control Assertions<\/h2><\/span>\n<span id=\"Authenticate_Against_Identity_Provider\"><h3>Authenticate Against Identity Provider<\/h3><\/span>\n<p>* Authenticate users and\/or groups from<br \/>\n&#8211; LDAP, e.g. AD<\/p>\n<span id=\"_6\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authenticateAgainstIdP_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authenticateAgainstIdP_1-300x73.jpg\" alt=\"layer7_policy_authenticateAgainstIdP_1\" width=\"300\" height=\"73\" class=\"aligncenter size-medium wp-image-9809\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authenticateAgainstIdP_1-300x73.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authenticateAgainstIdP_1.jpg 435w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_7\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authenticateAgainstIdP_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authenticateAgainstIdP_2.jpg\" alt=\"layer7_policy_authenticateAgainstIdP_2\" width=\"252\" height=\"38\" class=\"aligncenter size-full wp-image-9810\" \/><\/a><\/h6><\/span>\n<p>&#8211; Simple LDAP (cannot do groups)<br \/>\n&#8211; FIP (Federated IdP)<br \/>\n&#8211; IIP (Internal IdP)<\/p>\n<span id=\"Authenticate_User_or_Group\"><h3>Authenticate User or Group<\/h3><\/span>\n<span id=\"_8\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authenticateUser_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authenticateUser_1-300x182.jpg\" alt=\"layer7_policy_authenticateUser_1\" width=\"300\" height=\"182\" class=\"aligncenter size-medium wp-image-9811\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authenticateUser_1-300x182.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authenticateUser_1.jpg 481w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Authenticate_Against_a_Simple_LDAP_IdP\"><h4>Authenticate Against a Simple LDAP IdP<\/h4><\/span>\n<p>* Only users, <strong>not groups<\/strong>, can be authenticated against simple LDAP<\/p>\n<span id=\"Exchange_Credentials_using_WS-Trust_Assertion\"><h3>Exchange Credentials using WS-Trust Assertion<\/h3><\/span>\n<p>* Steps:<br \/>\n&#8211; extract credentials from preceding assertion<br \/>\n&#8211; send credentials to WS-Trust STS via WS-Trust RequestSecurityToken (RST) SOAP request<br \/>\n&#8211; extract RequestedSecurityToken (SAML or UsernameToken) from WS-Trust RequestSecurityTokenResponse (RSTR)<br \/>\n&#8211; replace original request&#8217;s credentials with RequestedSecurityToken<br \/>\n* Caveats:<br \/>\n&#8211; must configure the <em>Route via HTTP(S)<\/em> or <em>Route via SecureSpan Bridge<\/em> assertions to maintain the Security header in the message.<br \/>\n&#8212; The Exchange Credentials using WS-Trust assertion will be invalidated if the routing assertion in the policy is set to remove processed Security headers<br \/>\n&#8212; must select the &#8220;<em>Leave current Security header in request before routing<\/em>&#8221; option in the HTTP(S) Routing Properties that is used by both assertions.<br \/>\n&#8211; If the credentials in a message are covered by an XML Signature using the <em>Sign Element<\/em> assertion, then the signature will be invalidated when the credentials are replaced by the Exchange Credentials using WS-Trust assertion.<\/p>\n<span id=\"Extract_Attributes_from_Certificate_Assertion\"><h3>Extract Attributes from Certificate Assertion<\/h3><\/span>\n<p>* Extracts information from X.509 Certificate of the last authenticated user and places them in context variables:<br \/>\n&#8211; subject\/issuer DN fields<br \/>\n&#8211; some extended attributes<br \/>\n* Must be preceded by:<br \/>\n&#8211; at least one credential source assertion:<br \/>\n&#8212; Require SSL or TLS Transport with Client Authentication<br \/>\n&#8212; Require WS-Secure Conversation<br \/>\n&#8212; Require WS-Security Signature Credentials<br \/>\n&#8212; Require SAML Token Profile (Subject Confirmation: Holder of Key, Require Message Signature)<br \/>\n&#8211; an identity assertion, e.g. Authenticate User or Group<\/p>\n<span id=\"Extract_Attributes_for_Authenticated_User_Assertion\"><h3>Extract Attributes for Authenticated User Assertion<\/h3><\/span>\n<p>* Used to create context variables based on the attributes of a previously authenticated user<br \/>\n* Intended primarily to be used by <em>Create SAML Token<\/em> assertion<br \/>\n* Can also be read by any assertion that uses context variables<\/p>\n<span id=\"_9\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_extractAttr_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_extractAttr_1-300x296.jpg\" alt=\"layer7_policy_authoring_extractAttr_1\" width=\"300\" height=\"296\" class=\"aligncenter size-medium wp-image-9722\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_extractAttr_1-300x296.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_extractAttr_1.jpg 414w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_10\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_extractAttr_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_extractAttr_2-300x105.jpg\" alt=\"layer7_policy_authoring_extractAttr_2\" width=\"300\" height=\"105\" class=\"aligncenter size-medium wp-image-9723\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_extractAttr_2-300x105.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_extractAttr_2.jpg 596w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_11\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_extractAttr_3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_extractAttr_3-300x7.jpg\" alt=\"layer7_policy_authoring_extractAttr_3\" width=\"300\" height=\"7\" class=\"aligncenter size-medium wp-image-9724\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_extractAttr_3-300x7.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_extractAttr_3.jpg 843w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Perform_JDBC_Query_Assertion\"><h3>Perform JDBC Query Assertion<\/h3><\/span>\n<span id=\"_12\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_1-300x233.jpg\" alt=\"layer7_policy_authoring_jdbcQuery_1\" width=\"300\" height=\"233\" class=\"aligncenter size-medium wp-image-9727\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_1-300x233.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_1.jpg 642w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_13\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_2-269x300.jpg\" alt=\"layer7_policy_authoring_jdbcQuery_2\" width=\"269\" height=\"300\" class=\"aligncenter size-medium wp-image-9728\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_2-269x300.jpg 269w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_2.jpg 552w\" sizes=\"auto, (max-width: 269px) 100vw, 269px\" \/><\/a><\/h6><\/span>\n<span id=\"_14\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_3-300x105.jpg\" alt=\"layer7_policy_authoring_jdbcQuery_3\" width=\"300\" height=\"105\" class=\"aligncenter size-medium wp-image-9729\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_3-300x105.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_3.jpg 607w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_15\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_4.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_jdbcQuery_4.jpg\" alt=\"layer7_policy_authoring_jdbcQuery_4\" width=\"287\" height=\"70\" class=\"aligncenter size-full wp-image-9730\" \/><\/a><\/h6><\/span>\n<span id=\"Query_LDAP_Assertion\"><h3>Query LDAP Assertion<\/h3><\/span>\n<p>* Reads attributes from LDAP entries and stores them in context variables<\/p>\n<span id=\"_16\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_ldapQuery_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_ldapQuery_1-266x300.jpg\" alt=\"layer7_policy_authoring_ldapQuery_1\" width=\"266\" height=\"300\" class=\"aligncenter size-medium wp-image-9733\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_ldapQuery_1-266x300.jpg 266w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_ldapQuery_1.jpg 554w\" sizes=\"auto, (max-width: 266px) 100vw, 266px\" \/><\/a><\/h6><\/span>\n<span id=\"_17\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_ldapQuery_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_ldapQuery_2-300x96.jpg\" alt=\"layer7_policy_authoring_ldapQuery_2\" width=\"300\" height=\"96\" class=\"aligncenter size-medium wp-image-9734\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_ldapQuery_2-300x96.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_ldapQuery_2.jpg 604w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_18\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_ldapQuery_3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_ldapQuery_3-300x21.jpg\" alt=\"layer7_policy_authoring_ldapQuery_3\" width=\"300\" height=\"21\" class=\"aligncenter size-medium wp-image-9735\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_ldapQuery_3-300x21.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_ldapQuery_3.jpg 495w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Require_Encrypted_UsernameToken_Profile_Credentials_Assertion\"><h3>Require Encrypted UsernameToken Profile Credentials Assertion<\/h3><\/span>\n<p>* Requires an encrypted Username Token element to be present and that it be encrypted with the same key that was used to sign the timestamp or other parts of the message<br \/>\n* Requires message security features contained in WS-Security version 1.1 or later.<\/p>\n<span id=\"Require_FTP_Credentials_Assertion\"><h3>Require FTP Credentials Assertion<\/h3><\/span>\n<span id=\"Require_HTTP_Basic_Credentials_Assertion\"><h3>Require HTTP Basic Credentials Assertion<\/h3><\/span>\n<span id=\"_19\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_requireBasicAuth_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_requireBasicAuth_1.jpg\" alt=\"layer7_policy_requireBasicAuth_1\" width=\"181\" height=\"22\" class=\"aligncenter size-full wp-image-9813\" \/><\/a><\/h6><\/span>\n<span id=\"Require_HTTP_Cookie_Assertion\"><h3>Require HTTP Cookie Assertion<\/h3><\/span>\n<p>* Checks that a request contains a cookie with the same name as that specified in the assertion.<br \/>\n* If the request does not contain a cookie with this name, then the assertion fails.<br \/>\n* Does <strong>not<\/strong> check the validity or expiry of a cookie. It only checks for the presence of a cookie<\/p>\n<span id=\"_20\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_requireCookie_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_requireCookie_1.jpg\" alt=\"layer7_policy_requireCookie_1\" width=\"274\" height=\"76\" class=\"aligncenter size-full wp-image-9814\" \/><\/a><\/h6><\/span>\n<span id=\"_21\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_requireCookie_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_requireCookie_2.jpg\" alt=\"layer7_policy_requireCookie_2\" width=\"227\" height=\"35\" class=\"aligncenter size-full wp-image-9815\" \/><\/a><\/h6><\/span>\n<span id=\"Require_Remote_Domain_Identity_Assertion\"><h3>Require Remote Domain Identity Assertion<\/h3><\/span>\n<p>* Need to pair with SecureSpan XML VPN Client.<br \/>\n* Enables the Windows Domain Injection feature in the SecureSpan XML VPN Client.<\/p>\n<span id=\"Require_SAML_Token_Profile_Assertion\"><h3>Require SAML Token Profile Assertion<\/h3><\/span>\n<p>* Supports both the SAML 1.1 and 2.0 standards<br \/>\n* When used to validate an Attribute Statement, the attribute values that were validated are placed into context variables with the names: <em>saml.attr.att_nam<\/em>e<\/p>\n<span id=\"Require_SSH_Credentials_Assertion\"><h3>Require SSH Credentials Assertion<\/h3><\/span>\n<p>The Require SSH Credentials assertion allows you to require a user&#8217;s SSH credentials in a request. You can require either the user name and plain text password only, or the user name and public key only, or the user name and either the plain text password or the public key.<br \/>\nThis assertion is a credential source that saves the user name with the password or public key from the SSH session for later authentication and authorization using the Authenticate User or Group Assertion<\/p>\n<span id=\"Require_SSL_or_TLS_Transport_with_Client_Authentication_Assertion\"><h3>Require SSL or TLS Transport with Client Authentication Assertion<\/h3><\/span>\n<span id=\"Require_Windows_Integrated_Authentication_Credentials_Assertion\"><h3>Require Windows Integrated Authentication Credentials Assertion<\/h3><\/span>\n<p>* Requires the presence of credentials from a Windows domain in the request<br \/>\n* Make sure no other credential sources (e.g. Require HTTP Basic Credentials) are present in the policy<br \/>\n* Places realm of the client into the <em>kerberos.realm<\/em> context variable<br \/>\n* Realm is displayed when using <em>Manage Kerberos Configuration<\/em> task<\/p>\n<span id=\"Require_WS-Secure_Conversation_Assertion\"><h3>Require WS-Secure Conversation Assertion<\/h3><\/span>\n<span id=\"Require_WS-Security_Kerberos_Token_Profile_Credentials_Assertion\"><h3>Require WS-Security Kerberos Token Profile Credentials Assertion<\/h3><\/span>\n<p>* Requires that the request message contains a valid WSS1.1 Kerberos Token (specifically, a GSS wrapped Kerberos v5 AP-REQ, as defined in the GSSAPI specification).<br \/>\n* This assertion places the realm of the client in the <em>kerberos.realm<\/em> context variable<br \/>\n* Must validate realm before performing authentication<\/p>\n<span id=\"Require_WS-Security_Password_Digest_Credentials_Assertion\"><h3>Require WS-Security Password Digest Credentials Assertion<\/h3><\/span>\n<p>* Requires WSS Digest token present and matches with username and password<br \/>\n* Can optionally check the presence of timestamp or nonce<br \/>\n&#8211; Does <strong>not<\/strong> check:<br \/>\n&#8212; timestamp expiration<br \/>\n&#8212; reuse of nonce<\/p>\n<span id=\"Require_WS-Security_Signature_Credentials_Assertion\"><h3>Require WS-Security Signature Credentials Assertion<\/h3><\/span>\n<p>* Requires:<br \/>\n&#8211; presence of WS-Sec X.509 BinarySecurityToken containing a client certificate<br \/>\n&#8211; at least one element is signed<br \/>\n* Supports WS-Sec 1.0<br \/>\n* Best practices:<br \/>\n&#8211; use together with Protect Against Message Replay assertion to enforce timestamp<\/p>\n<span id=\"Require_WS-Security_UsernameToken_Profile_Credentials_Assertion\"><h3>Require WS-Security UsernameToken Profile Credentials Assertion<\/h3><\/span>\n<p>* Requires presence of<br \/>\n&#8211; user name<br \/>\n&#8211; plain text password<br \/>\n&#8211; authentication realm<br \/>\n* Supports WS-Sec 1.0<\/p>\n<span id=\"Require_XPath_Credentials_Assertion\"><h3>Require XPath Credentials Assertion<\/h3><\/span>\n<span id=\"Retrieve_Credentials_from_Context_Variable_Assertion\"><h3>Retrieve Credentials from Context Variable Assertion<\/h3><\/span>\n<p>* Retrieves X.509 cert contained in a specified context variable<\/p>\n<span id=\"Retrieve_SAML_Browser_Artifact_Assertion\"><h3>Retrieve SAML Browser Artifact Assertion<\/h3><\/span>\n<p>* Uses the credentials in a request message to obtain a SAML Browser Artifact from a SAML SSO endpoint<\/p>\n<span id=\"Use_WS-Federation_Credential_Assertion\"><h3>Use WS-Federation Credential Assertion<\/h3><\/span>\n<p>* Submits credentials from the current request to the local ADFS server<br \/>\n* Two modes of operation:<br \/>\n&#8211; Token request:<br \/>\n&#8212; submit previously authenticated login\/password (by other assertions) to ADFS<br \/>\n&#8212; add successfully returned SAML token to current request&#8217;s SOAP security header<br \/>\n&#8211; Token exchange:<br \/>\n&#8212; submit previously authenticated SAML token to ADFS<br \/>\n&#8212; add successfully returned SAML token to current request&#8217;s SOAP security header<\/p>\n<span id=\"Transport_Layer_Security_Assertions\"><h2>Transport Layer Security Assertions<\/h2><\/span>\n<span id=\"Require_SSL_or_TLS_Transport_Assertion\"><h3>Require SSL or TLS Transport Assertion<\/h3><\/span>\n<span id=\"_22\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_requireSSL_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_requireSSL_1-300x169.jpg\" alt=\"layer7_policy_authoring_requireSSL_1\" width=\"300\" height=\"169\" class=\"aligncenter size-medium wp-image-9740\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_requireSSL_1-300x169.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_requireSSL_1.jpg 314w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"XML_Security_Assertions\"><h2>XML Security Assertions<\/h2><\/span>\n<span id=\"Add_or_Remove_WS-Security_Assertion\"><h3>Add or Remove WS-Security Assertion<\/h3><\/span>\n<p>* Used to apply pending WS-Sec decorations to a message or to remove security headers<br \/>\n* Should be placed after the following WS-Sec assertions in a policy <em>and<\/em> if the target message is the request message or context variable<br \/>\n&#8211; Add Security Token<br \/>\n&#8211; Add Timestamp<br \/>\n&#8211; Configure WS-Sec Decoration<br \/>\n&#8211; Encrypt Element<br \/>\n&#8211; Sign Element<\/p>\n<span id=\"Add_Security_Token_Assertion\"><h3>Add Security Token Assertion<\/h3><\/span>\n<p>\/\/ TODO<\/p>\n<span id=\"Add_Timestamp_Assertion\"><h3>Add Timestamp Assertion<\/h3><\/span>\n<p>* Used to add <em>&lt;wsu:Timestamp&gt;<\/em> element into the SOAP security header of <em>all<\/em> target messages<br \/>\n* You can:<br \/>\n&#8211; specify expiry time period<br \/>\n-choose the method used to include SSL cert for the Gateway<\/p>\n<span id=\"Add_WS-Security_UsernameToken_Assertion\"><h3>Add WS-Security UsernameToken Assertion<\/h3><\/span>\n<p>* Deprecated. Use <em>Add Security Token Assertion<\/em> instead<\/p>\n<span id=\"Build_RST_SOAP_Request_Assertion\"><h3>Build RST SOAP Request Assertion<\/h3><\/span>\n<p>* Used to create a SOAP message containing a Request Security Token (RST) in the SOAP body.<br \/>\n* RST can be:<br \/>\n&#8211; Security Context Token (SCT)<br \/>\n&#8211; SAML oToken<\/p>\n<span id=\"Build_RSTR_SOAP_Response_Assertion\"><h3>Build RSTR SOAP Response Assertion<\/h3><\/span>\n<p>* Used to create a SOAP response message containing a RequestSecurityTokenResponse (RSTR) element<br \/>\n* Two types of responses:<br \/>\n&#8211; token issuance<br \/>\n&#8211; token cancellation<br \/>\n* Example<\/p>\n<pre lang=\"xml\">\r\n<wst:RequestSecurityTokenResponse Context=\"...\" xmlns:wst=\"...\">\r\n  <wst:TokenType>...<\/wst:TokenType>\r\n  <wst:RequestedSecurityToken>\r\n    \/\/ The issued security token appears here\r\n  <\/wst:RequestedSecurityToken>\r\n...\r\n<\/wst:RequestSecurityTokenResponse>\r\n<\/pre>\n<p>* Context Variables created:<br \/>\nprefix.rstrResponse<br \/>\nprefix.wsaNamespace<br \/>\nprefix.rstrWsaAction<\/p>\n<span id=\"Build_SAML_Protocol_Request_Assertion\"><h3>Build SAML Protocol Request Assertion<\/h3><\/span>\n<p>* Used to create a SAMLP request from either<br \/>\n&#8211; request message<br \/>\n&#8211; response message<br \/>\n&#8211; message variable<br \/>\n* Typically used with:<br \/>\n&#8211; Build SAML Protocol Request<br \/>\n&#8211; Route via HTTP(S)<br \/>\n&#8211; Evaluate SAML Protocol Response<\/p>\n<span id=\"SAML_Protocol_Request_Wizard\"><h3>SAML Protocol Request Wizard<\/h3><\/span>\n<p>\/\/ TODO<\/p>\n<span id=\"Build_SAML_Protocol_Response_Assertion\"><h3>Build SAML Protocol Response Assertion<\/h3><\/span>\n<p>* Used to<br \/>\n&#8211; place a SAML token into a SAML Protocl Response message<br \/>\n&#8211; allow various attributes\/elements of Response to be specified<\/p>\n<span id=\"Cancel_Security_Context_Assertion\"><h3>Cancel Security Context Assertion<\/h3><\/span>\n<p>* Used to cancel a security conversion session that is no longer in use<br \/>\n* Can be either:<br \/>\n&#8211; inbound<br \/>\n&#8211; outbound<br \/>\n* Cancel inbound session:<br \/>\n&#8211; cancel token<br \/>\n&#8211; build RSTR SOAP Response Assertion<\/p>\n<pre lang=\"xml\">\r\n<wst:RequestSecurityTokenResponse>\r\n  <wst:RequestedTokenCancelled\/>\r\n<\/wst:RequestSecurityTokenResponse>\r\n<\/pre>\n<p>* Cancel outbound session:<br \/>\n&#8211; Outbound sessions are established using the Establish Outbound Secure Conversation assertion.<br \/>\n&#8211; You simply need to specify the URL of the session being cancelled<\/p>\n<span id=\"Configure_WS-Security_Decoration_Assertion\"><h3>Configure WS-Security Decoration Assertion<\/h3><\/span>\n<p>* Used to specify or override pending security decorations for a message<br \/>\n* Provides a convenient location to set security attributes that were previously configured in other assertions:<br \/>\n&#8211; WS-Security Version<br \/>\n&#8211; Signature Digest Algorithm<br \/>\n&#8211; Encryption Algorithm(s)<br \/>\n&#8211; Signature Key Reference<br \/>\n&#8211; Encryption Key Reference<br \/>\n&#8211; Add Timestamp<br \/>\n&#8211; Security Token Signing<br \/>\n&#8211; Key Encryption Algorithm<br \/>\n&#8211; Use DerivedKey Token<br \/>\n* Four tabs to configure:<br \/>\n&#8211; General<br \/>\n&#8211; Signing<br \/>\n&#8211; Encryption<br \/>\n&#8211; Advanced<\/p>\n<span id=\"Create_SAML_Token_Assertion\"><h3>Create SAML Token Assertion<\/h3><\/span>\n<p>* Used to create and optionally sign a SAML otken<br \/>\n\/\/ TODO<\/p>\n<span id=\"Create_Security_Context_Token_Assertion\"><h3>Create Security Context Token Assertion<\/h3><\/span>\n<p>* Used to process an inbound message containing a RST request<br \/>\n* It will<br \/>\n&#8211; issue a Security Context Token (SCT)<br \/>\n&#8211; establish a secure conversation session<br \/>\n&#8211; save the session<br \/>\n* The secure conversation is mapped by the identifier defined in SCT<\/p>\n<span id=\"Create_XACML_Request_Assertion\"><h3>Create XACML Request Assertion<\/h3><\/span>\n<p>* Used to<br \/>\n&#8211; build a valid XACML request<br \/>\n&#8211; place it in the specified target (req msg, resp msg, or msg var)<br \/>\n* Can be used<br \/>\n&#8211; in <em>Evaluate XACML Policy<\/em> assertion<br \/>\n&#8211; routed to any other PDP for a decision<br \/>\n* Contains 4 attributes:<br \/>\n&#8211; Subject: 1 or more per request<br \/>\n&#8211; Resource: exactly one for XACML 1.0\/1.1, 1 or more for XACML 2.0<br \/>\n&#8211; Action: exactly one per request<br \/>\n&#8211; Environment: exactly one for XACML 2.0, 1 or 1 for 1.0\/1.1<\/p>\n<span id=\"Encrypt_Element_Assertion\"><h3>Encrypt Element Assertion<\/h3><\/span>\n<p>* used to select message elements to be encrypted in target message:<br \/>\n&#8211; if the target is <em>response<\/em> message, encryption will occur automatically<br \/>\n&#8211; if the target is <em>request<\/em> message or a <em>message CV<\/em>, then <em>Add or Remove WS-Security<\/em> assertion must be added <strong>after<\/strong> the Encrypt Element assertion in the policy to perform the encryption<br \/>\n* Supports <em>W3C Signature 1.0<\/em> standard<br \/>\n* Can only be used in a web service policy<br \/>\n&#8211; should be placed <strong>before<\/strong> the routing assertion in a policy<\/p>\n<span id=\"Establish_Outbound_Secure_Conversation_Assertion\"><h3>Establish Outbound Secure Conversation Assertion<\/h3><\/span>\n<p>* Used to create a new secure outbound conversation session using the security context identifier extracted from a Security Context Token<br \/>\n* The outbound session includes a <em>shared secret<\/em> to be used for message decoration in future message exchanges<br \/>\n* Context variables created by this assertion:<br \/>\n&#8211; outboundSC.session<br \/>\n&#8211; outboundSC.session.&lt;attribute&gt; e.g. <em>${outboundSC.session.id}<\/em><br \/>\nid: The session identifier<br \/>\nuser: The authenticated user<br \/>\n\tproviderId: The user&#8217;s Identity Provider ID<br \/>\n\tid: The user&#8217;s identifier<br \/>\n\tlogin: The user&#8217;s login ID<br \/>\n\tfirstName: The user&#8217;s first name<br \/>\n\tlastName: The user&#8217;s last name<br \/>\n\temail: The user&#8217;s email address<br \/>\n\tdepartment: The user&#8217;s department<br \/>\n\tsubjectDn: The user&#8217;s X.509 subject DN<br \/>\ncreation: The session creation time<br \/>\nexpiration: The session&#8217;s expiration time<br \/>\nscNamespace: The namespace of WSSecure Conversation<\/p>\n<span id=\"Evaluate_SAML_Protocol_Response_Assertion\"><h3>Evaluate SAML Protocol Response Assertion<\/h3><\/span>\n<p>* Used to evaluate a SAML protocol response<\/p>\n<span id=\"Evaluate_XACML_Policy_Assertion\"><h3>Evaluate XACML Policy Assertion<\/h3><\/span>\n<p>* Used to evaluate a XACML policy and renders an authorization decision for a resource based on the set of attributes found in a XACML request<br \/>\n* Fails with a policy that contains empty Description Element<\/p>\n<span id=\"Lookup_Outbound_Secure_Conversation_Assertion\"><h3>Lookup Outbound Secure Conversation Assertion<\/h3><\/span>\n<p>* Used to lookup an outbound secure conversation session that has been mapped to the authenticated user and the back-end service on which the secure conversation session is established<br \/>\n* Succeeds if at least one unexpired session is found<br \/>\n* CV created (see <a href=\"?p=9699&#038;preview=true#Establish_Outbound_Secure_Conversation_Assertion\">here<\/a> for session attributes):<br \/>\n&#8211; &lt;.session e.g. scLookup.session.id<\/p>\n<span id=\"Lookup_Trusted_Certificate_Assertion\"><h3>Lookup Trusted Certificate Assertion<\/h3><\/span>\n<p>* Used to lookup trusted certs based on CN value<br \/>\n&#8211; store certs in a CV for later user in a policy<\/p>\n<span id=\"Non-SOAPCheck_Results_from_XML_Verification_Assertion\"><h3>(Non-SOAP)Check Results from XML Verification Assertion<\/h3><\/span>\n<p>* Used to check the contents of the context variables produced by the (Non-SOAP)Verify XML Element Assertion<\/p>\n<span id=\"Non-SOAPDecrypt_XML_element_Assertion\"><h3>(Non-SOAP)Decrypt XML element Assertion<\/h3><\/span>\n<p>* used to immediately decrypt one or more <em>EncryptedData<\/em> elements in an XML message (non-soap)<br \/>\n* Context variables created:<br \/>\n&#8211; &lt;prefix&gt;.elementsDecrypted<br \/>\n&#8211; &lt;prefix&gt;.encryptionMethodsUris<br \/>\n&#8211; &lt;prefix&gt;.recipientCertificates<\/p>\n<span id=\"Non-SOAPEncrypt_XML_Element_Assertion\"><h3>(Non-SOAP)Encrypt XML Element Assertion<\/h3><\/span>\n<p>* Used to immediately encrypt one or more elements in an XML message (non-soap)<\/p>\n<span id=\"Non-SOAPSign_XML_Element_Assertion\"><h3>(Non-SOAP)Sign XML Element Assertion<\/h3><\/span>\n<p>* Used to immediately sign one or more elements in an XML message (non-soap)<br \/>\n&#8211; use <em>Sign Element Assertion<\/em> for SOAP messages<\/p>\n<span id=\"Non-SOAPVerify_XML_Element_Assertion\"><h3>(Non-SOAP)Verify XML Element Assertion<\/h3><\/span>\n<p>* used to immediately verify one or more <em>EncryptedData<\/em> elements in an XML message (non-soap)<br \/>\n* Supports the special prefix &#8216;<em>local:<\/em>&#8216; in the ID attribute, for matching the namespace URI against the owning element rather than the attribute<br \/>\n* Context variables created:<br \/>\n&#8211; &lt;prefix&gt;.elementsVerified<br \/>\n&#8211; &lt;prefix&gt;.signatureMethodUris<br \/>\n&#8211; &lt;prefix&gt;.digestMethodUris<br \/>\n&#8211; &lt;prefix&gt;.signingCertificates<br \/>\n&#8211; &lt;prefix&gt;.signatureValues<br \/>\n&#8211; &lt;prefix&gt;.signatureElements<\/p>\n<span id=\"Process_RSTR_Response_Assertion\"><h3>Process RSTR Response Assertion<\/h3><\/span>\n<p>* Used to process RSTR response message to get the security context<br \/>\n* Context variables created:<br \/>\n&#8211; &lt;prefix&gt;.token<br \/>\n&#8211; &lt;prefix&gt;.createTime<br \/>\n&#8211; &lt;prefix&gt;.expiryTime<br \/>\n&#8211; &lt;prefix&gt;.serverEntropy<br \/>\n&#8211; &lt;prefix&gt;.fullKey<br \/>\n&#8211; &lt;prefix&gt;.keySize<\/p>\n<span id=\"Protect_Against_Message_Replay_Assertion\"><h3>Protect Against Message Replay Assertion<\/h3><\/span>\n<p>* Used to protect Gateway against possible replay attacks<br \/>\n* Can be either cluster-wide (default) or per node<br \/>\n* Uses an internal reply ID<br \/>\n* Two modes:<br \/>\n&#8211; Default mode: reject if:<br \/>\n&#8212; dup creation times tamp in a msg<br \/>\n&#8212; expired time stamp<br \/>\n&#8211; creation time stamp is more than 30 days old<br \/>\n&#8211; Custom mode<br \/>\n* Considerations:<br \/>\n&#8211; place after an <em>Authenticate User or Group<\/em> assertion to improve performance<br \/>\n&#8211; should not be used in any policy that will process messages from JMS destinations that are configured with the &#8220;On completion&#8221; acknowledgement mode without a specified failure queue<\/p>\n<span id=\"_23\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_protectReplay_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_protectReplay_1-300x152.jpg\" alt=\"layer7_policy_authoring_protectReplay_1\" width=\"300\" height=\"152\" class=\"aligncenter size-medium wp-image-9757\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_protectReplay_1-300x152.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_protectReplay_1.jpg 442w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Require_Encrypted_Element_Assertion\"><h3>Require Encrypted Element Assertion<\/h3><\/span>\n<p>* Check that specific message elements are encrypted in target message<br \/>\n* Intended for use in a web service policy<br \/>\n&#8211; Supports <em>WS-Sec 1.0\/1.1<\/em><br \/>\n* Should be placed before the routing assertion in a policy when targeting the request message<\/p>\n<span id=\"_24\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_requireEncrypt_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_requireEncrypt_1-292x300.jpg\" alt=\"layer7_policy_authoring_requireEncrypt_1\" width=\"292\" height=\"300\" class=\"aligncenter size-medium wp-image-9758\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_requireEncrypt_1-292x300.jpg 292w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_requireEncrypt_1.jpg 537w\" sizes=\"auto, (max-width: 292px) 100vw, 292px\" \/><\/a><\/h6><\/span>\n<span id=\"Require_Signed_Element_Assertion\"><h3>Require Signed Element Assertion<\/h3><\/span>\n<p>* Check that specific message elements in the target message have been signed by the specified identity<br \/>\n* Intended for use in a web service policy<br \/>\n&#8211; Supports <em>WS-Sec 1.0\/1.1<\/em><br \/>\n* Context variable created:<br \/>\n&#8211; <em>${prefix.element}<\/em>: contains the signature element<br \/>\n&#8211; <em>${prefix.token.type}<\/em>: contains token type, i.e. Kerberos, sAML, SymmetricKey, X.509<br \/>\n&#8211; <em>${prefix.token.element}<\/em>: contains security token element, e.g. a binary security token<br \/>\n&#8211; <em>${prefix.token.attributes.*}<\/em>: contains token attributes (X.509: cert, SAML: issuer.certificate, subject.certificate, signing.certifcate)<\/p>\n<span id=\"_25\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_requireSign_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_requireSign_1-257x300.jpg\" alt=\"layer7_policy_authoring_requireSign_1\" width=\"257\" height=\"300\" class=\"aligncenter size-medium wp-image-9759\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_requireSign_1-257x300.jpg 257w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_requireSign_1.jpg 486w\" sizes=\"auto, (max-width: 257px) 100vw, 257px\" \/><\/a><\/h6><\/span>\n<span id=\"Require_Timestamp_Assertion\"><h3>Require Timestamp Assertion<\/h3><\/span>\n<p>* Check for the presence of a timestamp in the target message:<br \/>\n&#8211; SOAP header contains a valid &lt;wsu:Timestamp&gt; element and the date contained is no more than one minute in the future<br \/>\n&#8211; an expiry date is present in the timestamp and that date is no more than one minute in the past<br \/>\n&#8211; an expiry time is present in the timestamp and the current time of the Gateway is no later than the &lt;wsu:Created&gt; time + the Maximum Expiry Time configured in this assertion or the request SOAP &lt;wsu:Expires&gt; time, whichever occurs earlier.<br \/>\n* Optionally check for security signature for all timestamps<\/p>\n<span id=\"Sign_Element_Assertion\"><h3>Sign Element Assertion<\/h3><\/span>\n<p>* Used to sign selected message elements in the <em>target message<\/em><br \/>\n&#8211; if target is response message, signing occur automatically<br \/>\n&#8211; if target is request message or message context variable, then the <em>Add or Remove WS-Security<\/em> assertion must be added after the <em>Encrypt Element<\/em> assertion in the policy to perform the signing<br \/>\n* Supports <em>WS-Sec 1.0\/1.1<\/em><\/p>\n<span id=\"_26\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_sign_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_sign_1-262x300.jpg\" alt=\"layer7_policy_authoring_sign_1\" width=\"262\" height=\"300\" class=\"aligncenter size-medium wp-image-9760\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_sign_1-262x300.jpg 262w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_sign_1.jpg 510w\" sizes=\"auto, (max-width: 262px) 100vw, 262px\" \/><\/a><\/h6><\/span>\n<span id=\"Use_WS-Security_1.1_Assertion\"><h3>Use WS-Security 1.1 Assertion<\/h3><\/span>\n<p>* Check that policy is compliant with <em>WS-Security 1.1<\/em> including:<br \/>\n&#8211; the Use WS-Security 1.1 assertion<br \/>\n&#8211; at least one WS-Security signing\/encryption assertion enforced on the request (for example, Require WS-Security Signature Credentials, Require WS-Secure Conversation, Sign Element, Encrypt Element)<br \/>\n&#8211; at least one WS-Security signing\/encryption assertion acting on the response (for example, Add Timestamp, Sign Element, Encrypt Element)<\/p>\n<span id=\"Message_Routing_Assertions\"><h2>Message Routing Assertions<\/h2><\/span>\n<span id=\"Add_Header_Assertion\"><h3>Add Header Assertion<\/h3><\/span>\n<p>* Used to add custom headers to a message that will either be sent out over HTTP or returned as the default HTTP response<br \/>\n* Will always succeed<\/p>\n<span id=\"_27\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_addHeader_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_addHeader_1-300x206.jpg\" alt=\"layer7_policy_authoring_addHeader_1\" width=\"300\" height=\"206\" class=\"aligncenter size-medium wp-image-9763\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_addHeader_1-300x206.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_addHeader_1.jpg 303w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_28\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_addHeader_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_addHeader_2-300x88.jpg\" alt=\"layer7_policy_authoring_addHeader_2\" width=\"300\" height=\"88\" class=\"aligncenter size-medium wp-image-9764\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_addHeader_2-300x88.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_addHeader_2.jpg 451w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Copy_Request_Message_to_Response_Assertion\"><h3>Copy Request Message to Response Assertion<\/h3><\/span>\n<p>* Copies the inbound request exactly as it appears at the current point in the policy<br \/>\n&#8211; echo back request<\/p>\n<span id=\"_29\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_echoRequest_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_echoRequest_1-300x105.jpg\" alt=\"layer7_policy_authoring_echoRequest_1\" width=\"300\" height=\"105\" class=\"aligncenter size-medium wp-image-9765\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_echoRequest_1-300x105.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_echoRequest_1.jpg 471w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_30\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_echoRequest_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_echoRequest_2-300x39.jpg\" alt=\"layer7_policy_authoring_echoRequest_2\" width=\"300\" height=\"39\" class=\"aligncenter size-medium wp-image-9766\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_echoRequest_2-300x39.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_echoRequest_2.jpg 451w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Return_Template_Response_to_Requestor_Assertion\"><h3>Return Template Response to Requestor Assertion<\/h3><\/span>\n<p>* Used to define a message to be returned to the requestor<br \/>\n&#8211; useful for debugging messages<\/p>\n<span id=\"_31\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_tempalteResponse_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_tempalteResponse_1-300x140.jpg\" alt=\"layer7_policy_authoring_tempalteResponse_1\" width=\"300\" height=\"140\" class=\"aligncenter size-medium wp-image-9767\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_tempalteResponse_1-300x140.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_tempalteResponse_1.jpg 544w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_32\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_tempalteResponse_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_tempalteResponse_2-300x110.jpg\" alt=\"layer7_policy_authoring_tempalteResponse_2\" width=\"300\" height=\"110\" class=\"aligncenter size-medium wp-image-9768\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_tempalteResponse_2-300x110.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_tempalteResponse_2.jpg 515w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Route_via_FTPS_Assertion\"><h3>Route via FTP(S) Assertion<\/h3><\/span>\n<p>* Used to route requests to a backend FTP(S) server<br \/>\n&#8211; using passive mode FTP<\/p>\n<span id=\"_33\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeFTP_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeFTP_1-288x300.jpg\" alt=\"layer7_policy_authoring_routeFTP_1\" width=\"288\" height=\"300\" class=\"aligncenter size-medium wp-image-9769\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeFTP_1-288x300.jpg 288w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeFTP_1.jpg 537w\" sizes=\"auto, (max-width: 288px) 100vw, 288px\" \/><\/a><\/h6><\/span>\n<span id=\"Route_via_HTTPS_Assertion\"><h3>Route via HTTP(S) Assertion<\/h3><\/span>\n<p>* Used defines<br \/>\n&#8211; where a web service or XML application message is sent<br \/>\n&#8211; what authentication credentials to use<br \/>\n* If client authentication is requested by a service, then<br \/>\n&#8211; Gateway will use <strong>its<\/strong> certificate for the SSL-TLS handshake<br \/>\n* Supports HTTP 1.1 standard<br \/>\n* Automatically added when using<br \/>\n&#8211; Publish SOAP Web Service Wizard<br \/>\n&#8211; Create WSDL Wizard<br \/>\n&#8211; Publish XML Application Wizard<br \/>\n* Notes:<br \/>\n&#8211; Requests are routed downstream using the same HTTP verb (i.e. GET, POST) as incoming request<br \/>\n&#8211; HTTP POST is always used if request message source is a context variable<\/p>\n<span id=\"Target_Tab\"><h4>Target Tab<\/h4><\/span>\n<p>* URL: you can  use context variables in URL, e.g.<br \/>\n&#8211; <em>${request.http.header.sample-http-header}<\/em><br \/>\n&#8211; <em>http:\/\/${gateway.warehouse.hostname}\/ACMEWarehouseWS\/Service1.asmx<\/em><br \/>\n* How IP addresses should be retrieved:<br \/>\n&#8211; Lookup IP Addresses in DNS<br \/>\n&#8211; Use the following IP addresses<br \/>\n&#8211; Use multiple URLs<br \/>\n* IP fail strategy<br \/>\n&#8211; Ordered Sticky with Failover<br \/>\n&#8211; Random Sticky with Failover<br \/>\n&#8211; Round Robin<br \/>\n* Connection timeout:<br \/>\n&#8211; defined by <em>io.outConnectTimeout<\/em> cluster property<br \/>\n&#8211; defaults to 30 seconds<br \/>\n* Read timeout:<br \/>\n&#8211; defined by <em>io.outTimeout<\/em> cluster property<br \/>\n&#8211; defaults to 60 seconds<br \/>\n* Maximum retries<br \/>\n&#8211; choose between 1 and 100<br \/>\n&#8211; defaults to 3<br \/>\n* Follow Redirects:<br \/>\n&#8211; check to instruct the <em>Route via HTTP(S)<\/em> assertion to follow HTTP redirect responses from the downstream target.<br \/>\n&#8211; otherwise, redirect responses are sent back to the requestor.<br \/>\n* Assertion Outcome:<br \/>\n&#8211; Fail if target returns error status (>=400)<br \/>\n&#8211; Pass through SOAP faults with error status 500<br \/>\n&#8211; Never fail as long as target returns an answer<\/p>\n<span id=\"_34\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_URL.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_URL-300x281.jpg\" alt=\"layer7_policy_authoring_routeHTTP_URL\" width=\"300\" height=\"281\" class=\"aligncenter size-medium wp-image-9771\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_URL-300x281.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_URL.jpg 630w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Security_Tab\"><h4>Security Tab<\/h4><\/span>\n<p>* Specify HTTP Credentials<br \/>\n* Use HTTP Credentials from Request<br \/>\n* Attach SAML Sender-Vouches<br \/>\n&#8211; enabled only for SOAP web service policies<br \/>\n* Send TAI (Trusted Association Interceptor) Header<br \/>\n* Use Windows Integrated<br \/>\n&#8211; use delegated credentials<br \/>\n&#8211; use Gateway Keytab<br \/>\n&#8211; use configured credendials<br \/>\n* TLS Version<br \/>\n* Current WSS Header Handling: specify how to handle security header<br \/>\n&#8211; Don&#8217;t modify the request Security header<br \/>\n&#8211; Remove Layer 7 actor and mustUnderstand attributes from processed Security header<br \/>\n&#8211; Remove processed Security header from request before routing<br \/>\n&#8211; Promote other security header as default before routing<\/p>\n<span id=\"_35\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_Security.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_Security-300x287.jpg\" alt=\"layer7_policy_authoring_routeHTTP_Security\" width=\"300\" height=\"287\" class=\"aligncenter size-medium wp-image-9772\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_Security-300x287.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_Security.jpg 624w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Request_HTTP_Rules_Tab\"><h4>Request HTTP Rules Tab<\/h4><\/span>\n<span id=\"_36\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_requestHTTPRules.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_requestHTTPRules-300x286.jpg\" alt=\"layer7_policy_authoring_routeHTTP_requestHTTPRules\" width=\"300\" height=\"286\" class=\"aligncenter size-medium wp-image-9773\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_requestHTTPRules-300x286.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_requestHTTPRules.jpg 624w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Response_HTTP_Rules_Tab\"><h4>Response HTTP Rules Tab<\/h4><\/span>\n<span id=\"_37\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_responseHTTPRules.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_responseHTTPRules-300x285.jpg\" alt=\"layer7_policy_authoring_routeHTTP_responseHTTPRules\" width=\"300\" height=\"285\" class=\"aligncenter size-medium wp-image-9774\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_responseHTTPRules-300x285.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_responseHTTPRules.jpg 628w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Proxy_Tab\"><h4>Proxy Tab<\/h4><\/span>\n<span id=\"_38\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_proxy.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_proxy-300x286.jpg\" alt=\"layer7_policy_authoring_routeHTTP_proxy\" width=\"300\" height=\"286\" class=\"aligncenter size-medium wp-image-9775\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_proxy-300x286.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_routeHTTP_proxy.jpg 624w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Route_via_JMS_Assertion\"><h3>Route via JMS Assertion<\/h3><\/span>\n<span id=\"Route_via_MQ_Native\"><h3>Route via MQ Native<\/h3><\/span>\n<span id=\"Route_via_Raw_TCP\"><h3>Route via Raw TCP<\/h3><\/span>\n<p>* Used if the custom transport protocol &#8220;<em>l7.raw.tcp<\/em>&#8221; has been configured for a listen port.<br \/>\n* This assertion acts as a client of the server-side transport:<br \/>\n&#8211; it will<br \/>\n&#8212; transmit the request,<br \/>\n&#8212; close the sending side,<br \/>\n&#8212; read the response (if possible),<br \/>\n&#8212; and then initialize the response message with a preconfigured Content-Type.<br \/>\n* This assertion will succeed if the raw TCP routing is successful.<\/p>\n<span id=\"Route_via_SecureSpan_Bridge\"><h3>Route via SecureSpan Bridge<\/h3><\/span>\n<span id=\"Route_via_SSH2\"><h3>Route via SSH2<\/h3><\/span>\n<span id=\"Logging_Auditing_and_Alerts_Assertions\"><h2>Logging, Auditing, and Alerts Assertions<\/h2><\/span>\n<span id=\"Message_Auditing\"><h3>Message Auditing<\/h3><\/span>\n<span id=\"System_Audits\"><h4>System Audits<\/h4><\/span>\n<p>* User has no control<br \/>\n* Internal messages<br \/>\n* Severity levels:<br \/>\n&#8211; Fine<br \/>\n&#8211; Finer<br \/>\n&#8211; Finest<br \/>\n* Always available in the audit event log<\/p>\n<span id=\"Admin_Audits\"><h4>Admin Audits<\/h4><\/span>\n<p>* User can control with cluster property:<br \/>\n&#8211; <em>audit.adminThreshod<\/em><\/p>\n<span id=\"Policy_Message_Audits\"><h4>Policy Message Audits<\/h4><\/span>\n<p>* User has full control<br \/>\n* Generated during the processing of a policy<br \/>\n* Defaults to Warning<br \/>\n* Cluster properties to control thresholds:<br \/>\n&#8211; <em>audit.messageThreshold<\/em><br \/>\n&#8211; <em>audit.detailThreshold<\/em><\/p>\n<span id=\"Expand_the_Scope_of_Policy_Message_Audits_for_Troubleshooting\"><h4>Expand the Scope of Policy Message Audits for Troubleshooting<\/h4><\/span>\n<p>* Add <em>Audit Messages in Policy<\/em> assertion<br \/>\n&#8211; set its trigger severity level to <em>Warning<\/em> which has results:<br \/>\n&#8212; <em>Info <\/em>becomes <em>Warning<\/em><br \/>\n&#8212; <em>Warning<\/em> remains <em>Warning<\/em><br \/>\n&#8212; <em>Severe<\/em> remains <em>Severe<\/em><\/p>\n<span id=\"Add_Audit_Detail_Assertion\"><h3>Add Audit Detail Assertion<\/h3><\/span>\n<p>* Used to define a custom message in audit message<\/p>\n<span id=\"_39\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_auditDetail_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_auditDetail_1-300x110.jpg\" alt=\"layer7_policy_authoring_auditDetail_1\" width=\"300\" height=\"110\" class=\"aligncenter size-medium wp-image-9779\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_auditDetail_1-300x110.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_auditDetail_1.jpg 573w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_40\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_auditDetail_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_auditDetail_2-300x162.jpg\" alt=\"layer7_policy_authoring_auditDetail_2\" width=\"300\" height=\"162\" class=\"aligncenter size-medium wp-image-9780\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_auditDetail_2-300x162.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_auditDetail_2.jpg 654w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Audit_Messages_in_Policy_Assertion\"><h3>Audit Messages in Policy Assertion<\/h3><\/span>\n<p>* Used to enable auditing of messages within a policy<br \/>\n* Records events related to the processing of a policy<br \/>\n&#8211; assertion violations<br \/>\n&#8211; authentication failures<br \/>\n&#8211; routing errors<br \/>\n* Events can be viewed in Gateway Audit Events window<\/p>\n<span id=\"_41\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_auditMsgInPolicy_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_auditMsgInPolicy_1-300x183.jpg\" alt=\"layer7_policy_authoring_auditMsgInPolicy_1\" width=\"300\" height=\"183\" class=\"aligncenter size-medium wp-image-9778\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_auditMsgInPolicy_1-300x183.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_auditMsgInPolicy_1.jpg 362w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Capture_Identity_of_Requestor_Assertion\"><h3>Capture Identity of Requestor Assertion<\/h3><\/span>\n<p>* Used to capture requestor&#8217;s identity for auditing or reporting:<br \/>\n&#8211; requestor&#8217;s IP address<br \/>\n&#8211; requestor&#8217;s authenticated user ID<br \/>\n&#8211; value from a context variable that contains identifying info abou the requestor<br \/>\n* Can define upto 5 mappings in a <em>Capture Identity of Requestor<\/em> assertion<\/p>\n<span id=\"_42\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_captureRequestorId.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_captureRequestorId-300x71.jpg\" alt=\"layer7_policy_authoring_captureRequestorId\" width=\"300\" height=\"71\" class=\"aligncenter size-medium wp-image-9782\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_captureRequestorId-300x71.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_captureRequestorId.jpg 619w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Can be viewed in the <em>Details<\/em> tab of the Gateway Audit Events window<\/p>\n<span id=\"_43\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_captureRequestorId_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_captureRequestorId_2-300x178.jpg\" alt=\"layer7_policy_authoring_captureRequestorId_2\" width=\"300\" height=\"178\" class=\"aligncenter size-medium wp-image-9783\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_captureRequestorId_2-300x178.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_captureRequestorId_2.jpg 468w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Customize_SOAP_Fault_Response_Assertion\"><h3>Customize SOAP Fault Response Assertion<\/h3><\/span>\n<p>* Used to configure SOAP fault response on a policy-by-policy basis<br \/>\n* SOAP fault detail levels:<br \/>\n&#8211; Drop connection<br \/>\n&#8211; Generic SOAP fault<br \/>\n&#8211; Medium detail<br \/>\n&#8211; Full detail<br \/>\n&#8211; Template<br \/>\n* Must be placed within a <em>message received<\/em> or <em>pre security<\/em> global policy, i.e. at the beginning of the policy<\/p>\n<span id=\"_44\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_customSOAPFault_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_customSOAPFault_1-203x300.jpg\" alt=\"layer7_policy_authoring_customSOAPFault_1\" width=\"203\" height=\"300\" class=\"aligncenter size-medium wp-image-9785\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_customSOAPFault_1-203x300.jpg 203w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_customSOAPFault_1.jpg 433w\" sizes=\"auto, (max-width: 203px) 100vw, 203px\" \/><\/a><\/h6><\/span>\n<span id=\"_45\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_customSOAPFault_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_customSOAPFault_2-300x256.jpg\" alt=\"layer7_policy_authoring_customSOAPFault_2\" width=\"300\" height=\"256\" class=\"aligncenter size-medium wp-image-9786\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_customSOAPFault_2-300x256.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_customSOAPFault_2.jpg 579w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Send_Email_Alert_Assertion\"><h3>Send Email Alert Assertion<\/h3><\/span>\n<span id=\"_46\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_sendEmailAlerts.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_sendEmailAlerts-300x153.jpg\" alt=\"layer7_policy_authoring_sendEmailAlerts\" width=\"300\" height=\"153\" class=\"aligncenter size-medium wp-image-9788\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_sendEmailAlerts-300x153.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_sendEmailAlerts.jpg 813w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Send_SNMP_Trap\"><h3>Send SNMP Trap<\/h3><\/span>\n<span id=\"_47\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_sendSNMPTrap.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_sendSNMPTrap-300x174.jpg\" alt=\"layer7_policy_authoring_sendSNMPTrap\" width=\"300\" height=\"174\" class=\"aligncenter size-medium wp-image-9789\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_sendSNMPTrap-300x174.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_sendSNMPTrap.jpg 333w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Policy_Logic_Assertions\"><h2>Policy Logic Assertions<\/h2><\/span>\n<span id=\"Threat_Protection_Assertions\"><h2>Threat Protection Assertions<\/h2><\/span>\n<span id=\"Automatic_Threat_Protection\"><h3>Automatic Threat Protection<\/h3><\/span>\n<p>* Built-in protectino<br \/>\n* Cannot be disabled<\/p>\n<span id=\"Protections\"><h4>Protections<\/h4><\/span>\n<p>* All TCP\/IP based attacks, e.g.<br \/>\n&#8211; ICMP flood<br \/>\n&#8211; ping of death<br \/>\n&#8211; routing redirect style attacks<br \/>\n* Coercive Parsing and XML Bomb<br \/>\n* External Entity Attack<br \/>\n&#8211; Gateway does not resolve external entities by default<br \/>\n&#8211; Gateway can be configured using the <em>Evaluate Request XPath<\/em> and <em>Evaluate Response XPath<\/em> assertions to block all messages containing references to external entities.<br \/>\n* Schema poisoning<br \/>\n&#8211; Schema poisoning involves an attacker attempting to compromise a system by replacing or tampering with the schema.<br \/>\n&#8211; Gateway does not load schemas from unauthorized locations<br \/>\n&#8211; All schemas must be loaded by the admin<br \/>\n&#8211; Dynamic loading is not permitted<br \/>\n* WSDL Scanning<br \/>\n* XML Routing Detours<\/p>\n<span id=\"Limit_Message_Size_Assertion\"><h3>Limit Message Size Assertion<\/h3><\/span>\n<p>* Used to specify a size limit for<br \/>\n&#8211; an entire message (including attachments)<br \/>\n&#8211; a port of XML message (not including attachments)<br \/>\n* Should be placed before the routing assertion in the policy<\/p>\n<span id=\"_48\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_limitMsgSize.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_limitMsgSize-300x227.jpg\" alt=\"layer7_policy_authoring_limitMsgSize\" width=\"300\" height=\"227\" class=\"aligncenter size-medium wp-image-9790\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_limitMsgSize-300x227.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_limitMsgSize.jpg 349w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Protect_Against_Code_Injection_Assertion\"><h3>Protect Against Code Injection Assertion<\/h3><\/span>\n<span id=\"_49\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_codeInjection.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_codeInjection-300x296.jpg\" alt=\"layer7_policy_authoring_codeInjection\" width=\"300\" height=\"296\" class=\"aligncenter size-medium wp-image-9791\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_codeInjection-300x296.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_codeInjection.jpg 443w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Protect_Against_Cross-Site_Request_Forgery_CSRF\"><h3>Protect Against Cross-Site Request Forgery (CSRF)<\/h3><\/span>\n<p>* Provides two mechanisms:<br \/>\n&#8211; double submit cookie validation: This can be used to validate the contents of a cookie that contains some session identifier, to see if it matches the same session identifier contained in a request parameter.<br \/>\n&#8211; HTTP referer validation:This can be used to ensure that the referer value belongs to a whitelist of domains. Although the referer domain is easily spoofed, this validation reduces the attack vectors for a CSRF attack.<br \/>\n* Context variable created:<br \/>\n&#8211; <strong>csrf.valid.token<\/strong> contains the value of the cookie<\/p>\n<span id=\"_50\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_csrf.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_csrf-296x300.jpg\" alt=\"layer7_policy_authoring_csrf\" width=\"296\" height=\"300\" class=\"aligncenter size-medium wp-image-9792\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_csrf-296x300.jpg 296w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_csrf.jpg 437w\" sizes=\"auto, (max-width: 296px) 100vw, 296px\" \/><\/a><\/h6><\/span>\n<span id=\"Protect_Against_Document_Structure_Threats_Assertion\"><h3>Protect Against Document Structure Threats Assertion<\/h3><\/span>\n<p>* Used to specify size limits for incoming XML requests<br \/>\n&#8211; protects against XDoS attacks using oversized files<\/p>\n<span id=\"_51\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_XDoS.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_XDoS-300x208.jpg\" alt=\"layer7_policy_authoring_XDoS\" width=\"300\" height=\"208\" class=\"aligncenter size-medium wp-image-9793\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_XDoS-300x208.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_XDoS.jpg 509w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Protect_Against_Message_Replay_Assertion_1\"><h3>Protect Against Message Replay Assertion<\/h3><\/span>\n<p>see <a href=\"?p=9699#Protect_Against_Message_Replay_Assertion\">previous<\/a><\/p>\n<span id=\"Protect_Against_SQL_Attack_Assertion\"><h3>Protect Against SQL Attack Assertion<\/h3><\/span>\n<p>* Checks request message for patterns associated with potential SQL injection attacks<\/p>\n<span id=\"_52\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_SQLInjection.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_SQLInjection-300x219.jpg\" alt=\"layer7_policy_authoring_SQLInjection\" width=\"300\" height=\"219\" class=\"aligncenter size-medium wp-image-9794\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_SQLInjection-300x219.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_SQLInjection.jpg 516w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Scan_Using_ICAP-Enabled_Antivirus_Assertion\"><h3>Scan Using ICAP-Enabled Antivirus Assertion<\/h3><\/span>\n<p>* Allows Gateway to connect to an antivirus server that supports the ICAP protocol, such as McAfee\u00ae, Sophos\u00ae, or Symantec\u2122.<br \/>\n* Context variables created:<br \/>\n&#8211; icap.response.infected<br \/>\n&#8211; icap.response.header.names.X<br \/>\n&#8211; icap.response.header.values.X<br \/>\n&#8211; icap.response.header.values.X.headerName<\/p>\n<span id=\"_53\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_antiVirus.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_antiVirus-296x300.jpg\" alt=\"layer7_policy_authoring_antiVirus\" width=\"296\" height=\"300\" class=\"aligncenter size-medium wp-image-9795\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_antiVirus-296x300.jpg 296w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_antiVirus.jpg 628w\" sizes=\"auto, (max-width: 296px) 100vw, 296px\" \/><\/a><\/h6><\/span>\n<span id=\"Validate_JSON_Schema_Assertion\"><h3>Validate JSON Schema Assertion<\/h3><\/span>\n<p>* Used to validate JSON data against JSON schema:<br \/>\n&#8211; validate JSON data structure<br \/>\n&#8211; validate JSON data property type<br \/>\n&#8211; validate JSON data property values<\/p>\n<h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_validateJSON.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_validateJSON-300x236.jpg\" alt=\"layer7_policy_authoring_validateJSON\" width=\"300\" height=\"236\" class=\"aligncenter size-medium wp-image-9797\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_validateJSON-300x236.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_validateJSON.jpg 481w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n<\/h6>\n<span id=\"Validate_or_Change_Content_Type_Assertion\"><h3>Validate or Change Content Type Assertion<\/h3><\/span>\n<p>* Can be used to validate or change the Content-Type of any target message<\/p>\n<span id=\"_54\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_contentType.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_contentType.jpg\" alt=\"layer7_policy_authoring_contentType\" width=\"297\" height=\"213\" class=\"aligncenter size-full wp-image-9796\" \/><\/a><\/h6><\/span>\n<span id=\"Validate_XML_Schema_Assertion\"><h3>Validate XML Schema Assertion<\/h3><\/span>\n<p>* Protect against:<br \/>\n&#8211; XML parameter tampering<br \/>\n&#8211; XDoS attacks<br \/>\n* Schema is provided by Gateway Admin<br \/>\n* WSDL contained schema can also be extracted and used<br \/>\n* A policy can contain multiple <em>Validate XML Schema<\/em> assertions.<br \/>\n* Schema validation failure is captured in context variable <strong>${chema.failure}<\/strong><br \/>\n* Tarari Schema Validation Limitations<br \/>\n&#8211; can be used to accelerate schema validation<\/p>\n<span id=\"_55\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_validateSchema_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_validateSchema_1-258x300.jpg\" alt=\"layer7_policy_authoring_validateSchema_1\" width=\"258\" height=\"300\" class=\"aligncenter size-medium wp-image-9799\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_validateSchema_1-258x300.jpg 258w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_validateSchema_1.jpg 605w\" sizes=\"auto, (max-width: 258px) 100vw, 258px\" \/><\/a><\/h6><\/span>\n<span id=\"_56\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_validateSchema_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_validateSchema_2-274x300.jpg\" alt=\"layer7_policy_authoring_validateSchema_2\" width=\"274\" height=\"300\" class=\"aligncenter size-medium wp-image-9800\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_validateSchema_2-274x300.jpg 274w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_policy_authoring_validateSchema_2.jpg 615w\" sizes=\"auto, (max-width: 274px) 100vw, 274px\" \/><\/a><\/h6><\/span>\n<span id=\"Internal_Assertions\"><h2>Internal Assertions<\/h2><\/span>\n<span id=\"Collect_WSDM_Metrics_Assertion\"><h3>Collect WSDM Metrics Assertion<\/h3><\/span>\n<p>* Used to collect metrics for a specified resource that is interoperable with the Web Services Distributed Management (WSDM) specification.<br \/>\n* Automatically added to a policy when the <em>WSDM QosMetrics<\/em> internal service is published<\/p>\n<span id=\"_57\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_publish_WSDMQosMetrisSvc.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_publish_WSDMQosMetrisSvc-300x244.jpg\" alt=\"layer7_publish_WSDMQosMetrisSvc\" width=\"300\" height=\"244\" class=\"aligncenter size-medium wp-image-9801\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_publish_WSDMQosMetrisSvc-300x244.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_publish_WSDMQosMetrisSvc.jpg 680w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_58\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_publish_WSDMQosMetrisSvc_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2014\/03\/layer7_publish_WSDMQosMetrisSvc_2.jpg\" alt=\"layer7_publish_WSDMQosMetrisSvc_2\" width=\"291\" height=\"84\" class=\"aligncenter size-full wp-image-9802\" \/><\/a><\/h6><\/span>\n<p>* This assertion forwards <em>GetMultipleResourceProperties<\/em> requests to the Layer 7 implementation of the WSDM service<br \/>\n* Requires that the cluster property <em>serviceMetrics.enabled<\/em> be set to true (default setting).<br \/>\n* Supported metrics:<br \/>\n&#8211; muws2:OperationalStatus<br \/>\n&#8211; mows:NumberOfRequests<br \/>\n&#8211; mows:NumberOfFailedRequests<br \/>\n&#8211; mows:NumberOfSuccessfulRequests<br \/>\n&#8211; mows:ServiceTime<br \/>\n&#8211; mows:MaxResponseTime<br \/>\n&#8211; mows:LastResponseTime<br \/>\n&#8211; qosm:Throughput<br \/>\n&#8211; qosm:AvgResponseTime<\/p>\n<span id=\"Convert_Audit_Record_to_XML_Assertion\"><h3>Convert Audit Record to XML Assertion<\/h3><\/span>\n<p>* Converts current audit record into XML code as an in-memory DOM tree, overwriting the targeted message<br \/>\n* This assertion is designed to populate the request in an audit sink policy with some XML. The resulting XML is not enclosed in a SOAP envelope<\/p>\n<span id=\"Handle_UDDI_Subscription_Notification_Assertion\"><h3>Handle UDDI Subscription Notification Assertion<\/h3><\/span>\n<span id=\"Manage_Gateway_Assertion\"><h3>Manage Gateway Assertion<\/h3><\/span>\n<p>* Processes the request as a management SOAP message<br \/>\n* Will populate the response message<br \/>\n* Automatically added to a policy when the Gateway Management internal service is published<br \/>\n* Context variables created:<br \/>\n&#8211; prefix.action<br \/>\n&#8211; prefix.entityType<br \/>\n&#8211; prefix.entityId<br \/>\n&#8211; prefix.message<\/p>\n<span id=\"Subscribe_to_WSDM_Resource_Assertion\"><h3>Subscribe to WSDM Resource Assertion<\/h3><\/span>\n<p>* Used to send subscription requests to a specific resouce that is interoperable with the DoD Joint Web Services Distributed Management (WSDM) specification.<br \/>\n* Automatically added to a policy when the WSDM Subscription internal service is published<br \/>\n* Recognizes three methods:<br \/>\n&#8211; Subscribe<br \/>\n&#8211; Renew<br \/>\n&#8211; Unsubscribe<\/p>\n<span id=\"References\"><h2>References<\/h2><\/span>\n<p>* Layer 7 Policy Authoring User Manual v6.2.pdf<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Policy Fragments Overview * Used to group assertions * Can be used in any published service * Two types of policy fragments: &#8211; included policy fragments: need to be manually included in service policy &#8211; global policy fragments: will run &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=9699\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[306],"tags":[630,404],"class_list":["post-9699","post","type-post","status-publish","format-standard","hentry","category-layer7","tag-layer7","tag-policy"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-2wr","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/9699","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9699"}],"version-history":[{"count":31,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/9699\/revisions"}],"predecessor-version":[{"id":9958,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/9699\/revisions\/9958"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}