<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.2+Addr//EN" "xmlspec.dtd">
<!--
/*
 * Copyright © 2007 World Wide Web Consortium,
 *
 * (Massachusetts Institute of Technology, European Research Consortium for
 * Informatics and Mathematics, Keio University). All Rights Reserved. This
 * work is distributed under the W3C® Document License [1] in the hope that
 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * [1] http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231
 */
    -->
<!-- $Id: ws-policy-guidelines.xml,v 1.4 2007/11/07 12:57:20 fsasaki Exp $ -->
<?xml-stylesheet type='text/xsl' href='xmlspec-policy.xsl'?><spec w3c-doctype="wgnote" role="public"><header><title>Web Services Policy 1.5 - Guidelines for Policy Assertion Authors</title><w3c-designation>http://www.w3.org/TR/2007/NOTE-ws-policy-guidelines-20071112</w3c-designation><w3c-doctype>W3C Working Group Note</w3c-doctype><pubdate><day>12</day><month>November</month><year>2007</year></pubdate><publoc>
      <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2007/NOTE-ws-policy-guidelines-20071112" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2007/NOTE-ws-policy-guidelines-20071112</loc>
    </publoc><altlocs><loc xmlns:xlink="http://www.w3.org/1999/xlink" role="pdf" href="ws-policy-guidelines.pdf" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">PDF</loc><loc xmlns:xlink="http://www.w3.org/1999/xlink" role="postscript" href="ws-policy-guidelines.ps" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">PostScript</loc><loc xmlns:xlink="http://www.w3.org/1999/xlink" role="xml" href="ws-policy-guidelines.xml" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">XML</loc><loc xmlns:xlink="http://www.w3.org/1999/xlink" role="plain" href="ws-policy-guidelines.txt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">plain text</loc></altlocs><prevlocs>
            <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2007/WD-ws-policy-guidelines-20070928" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2007/WD-ws-policy-guidelines-20070928</loc>
        </prevlocs><latestloc><loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/ws-policy-guidelines" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/ws-policy-guidelines</loc></latestloc><authlist><author role="editor"><name>Asir S Vedamuthu</name><affiliation>Microsoft Corporation</affiliation></author><author role="editor"><name>David Orchard</name><affiliation>BEA Systems, Inc.</affiliation></author><author role="editor"><name>Frederick Hirsch</name><affiliation>Nokia</affiliation></author><author role="editor"><name>Maryann Hondo</name><affiliation>IBM Corporation</affiliation></author><author role="editor"><name>Prasad Yendluri</name><affiliation>webMethods (A subsidiary of Software AG)</affiliation></author><author role="editor"><name>Toufic Boubez</name><affiliation>Layer 7 Technologies</affiliation></author><author role="editor"><name>Ümit Yalçinalp</name><affiliation>SAP AG.</affiliation></author></authlist><abstract><p>
        <emph>Web Services Policy 1.5 - Guidelines for Policy Assertion Authors</emph> is intended to provide guidance for Assertion
        Authors that will work with the Web Services Policy 1.5 - Framework [<bibref ref="WS-Policy"/>] and Web Services Policy 1.5 - Attachment [<bibref ref="WS-PolicyAttachment"/>] specifications to create domain
        specific assertions. The focus of this document is to provide
        best practices and patterns to follow as well as illustrate
        the care needed in using WS-Policy to achieve the best
        possible results for interoperability. It is a complementary
        guide to using the specifications. </p></abstract><status><p><emph>This section describes the status of this document at the
time of its publication. Other documents may supersede this
document. A list of current W3C publications and the latest
revision of this technical report can be found in the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C technical reports index</loc> at http://www.w3.org/TR/.</emph></p><p>This is a <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2004/02/Process-20040205/tr#WGNote" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C Working Group Note</loc> of the Web Services Policy 1.5 - Guidelines for Policy Assertion Authors specification, developed by the members of the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2002/ws/policy/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Web Services Policy Working Group</loc>, which is part of the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2002/ws/Activity" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C Web Services Activity</loc>.</p><p>A list of <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#change-description" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">changes in this version of
the document</loc> and a <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="ws-policy-guidelines-diff20070928.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">diff-marked version against
the previous version of this document</loc> are available. Please send comments about this document to the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="mailto:public-ws-policy-comments@w3.org" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public-ws-policy-comments@w3.org</loc> mailing list (<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://lists.w3.org/Archives/Public/public-ws-policy-comments/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public archive</loc>) with a subject that is prefaced with [ws-policy-guidelines].</p><p>Publication as a Working Group Note does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.</p><p>This document was produced by a group operating under the
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Patent-Policy-20040205/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">5
February 2004 W3C Patent Policy</loc>. W3C maintains a <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2004/01/pp-impl/39293/status" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public list of any patent disclosures</loc> made in connection with the deliverables of
the group; that page also includes instructions for disclosing a
patent. An individual who has actual knowledge of a patent which
the individual believes contains <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
Essential Claim(s)</loc> must disclose the information in accordance
with <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
section 6 of the W3C Patent Policy</loc>.</p></status><langusage><language id="en-US">English</language></langusage><revisiondesc><p>Last Modified: $Date: 2007/11/07 12:57:20 $</p></revisiondesc></header><body><div1 id="introduction"><head>Introduction</head><p>The WS-Policy specification defines a policy to be a collection
        of policy alternatives. Each policy alternative is a
        collection of policy assertions. The Web Services Policy 1.5 - Framework provides a flexible framework to 
        represent
        consistent combinations of behaviors from a variety of domains.
        A policy assertion is a machine readable metadata expression that 
        identifies behaviors  required for Web services interactions.
        <emph>Web Services Policy 1.5 - Guidelines for Policy Assertion Authors</emph>
        is a resource primarily for Assertion Authors and provides
        guidelines on the use of Web Services Policy 1.5 - Framework and
        Web Services Policy 1.5 - Attachment specifications to create and use domain specific
        assertions to enable interoperability.
        </p><p>WS-Policy Assertions communicate the requirements and capabilities of a web
        service by adhering to the specification, WS-Policy Framework. To enable interoperability of web
        services different sets of WS-Policy Assertions need to be
        defined by different communities based upon domain-specific requirements of
        the web service.
        </p><p>The focus of these guidelines is to capture best
        practices and usage patterns for practitioners. It is a
        complementary guide to the Framework and Attachments
        specifications and the Primer. It is intended to provide
        non-normative guidelines for WS-Policy Assertion Authors who
        need to know the features of the language and understand the
        requirements for describing policy assertions. Some of the guidance 
        for WS-Policy Assertion Authors can also be helpful for those who use 
        the policy assertions created by Assertion Authors.
        </p><p>This document assumes a basic understanding of XML, 
        Namespaces in XML, WSDL, SOAP and the Web Services Policy language. 
        </p><p>This is a non-normative document and does
        not provide a definitive specification of the Web Services
        Policy framework. <specref ref="xml-namespaces"/> lists all
        the namespace prefixes that are used in this document. (XML
        elements without a namespace prefix are from the Web Services
        Policy XML Namespace.)
        </p><p> As a companion document to the primer, this document also follows
        the Socratic style of beginning with a question, and then answering 
        the question.
        </p></div1><div1 id="best-practices-list"><head>List of Best Practice Statements</head><p>The following Best Practices appear in this document with discussion and examples, and are summarized here for quick reference:</p><ulist><item><p><specref ref="bp-compatibility-tests"/></p></item><item><p><specref ref="bp-ignorable-for-not-related-to-compatibility-tests"/></p></item><item><p><specref ref="bp-semantics-and-form"/></p></item><item><p><specref ref="bp-assertion-start"/></p></item><item><p><specref ref="bp-unique-qnames"/></p></item><item><p><specref ref="XMLOutline"/></p></item><item><p><specref ref="AssertionDefinitions"/></p></item><item><p><specref ref="DefineIgnorable"/></p></item><item><p><specref ref="ignorableAssertions"/></p></item><item><p><specref ref="bp-assertion-xml-allow-optional"/></p></item><item><p><specref ref="bp-not-necessary-to-understand-a-message"/></p></item><item><p><specref ref="bp-assertion-duplication"/></p></item><item><p><specref ref="bp-assertion-parameters"/></p></item><item><p><specref ref="bp-dependent-behaviors"/></p></item><item><p><specref ref="bp-declare-nested-assertions"/></p></item><item><p><specref ref="bp-discourage-domain-specific-intersection"/></p></item><item><p><specref ref="bp-entire-mep-for-optional"/></p></item><item><p><specref ref="bp-limitoptional-assertion-use"/></p></item><item><p><specref ref="bp-indicate-optional-assertion-use"/></p></item><item><p><specref ref="bp-assertion-semantics"/></p></item><item><p><specref ref="bp-semantics-multiple-same-type"/></p></item><item><p><specref ref="bp-leverage-defined-attachment-mechanisms"/></p></item><item><p><specref ref="bp-use-defined-policy-subjects"/></p></item><item><p><specref ref="bp-identify-policy-subjects"/></p></item><item><p><specref ref="bp-WSDL-policy-subject"/></p></item><item><p><specref ref="bp-WSDL-consider-scope"/></p></item><item><p><specref ref="bp-WSDL-policy-subject-Granularity"/></p></item><item><p><specref ref="bp-WSDL-multiple-policy-subjects"/></p></item><item><p><specref ref="bp-WSDL-preferred-attachment-point"/></p></item><item><p><specref ref="bp-UDDI-tmodels"/></p></item><item><p><specref ref="bp-specify-composition"/></p></item><item><p><specref ref="bp-independent-assertions"/></p></item><item><p><specref ref="bp-policy-subject-change"/></p></item></ulist></div1><div1 id="Assertions"><head>What is an Assertion? </head><p>An assertion is a piece of metadata that describes a capability related to a specific domain that 
			has chosen to express their capabilities 
			via the WS-Policy expressions. Sets of domain-specific assertions
      	are typically defined in a dedicated specification that describes
      	their semantics, applicability and scoping requirements as well
      	as their data type definition using XML Schema [<bibref ref="XMLSchemaPart1"/>]. 
      	</p><p>Policy assertions representing shared and visible behaviors are useful pieces of metadata to enable 
      	interoperability and tooling for automation. The key to understanding when to
        design policy assertions is to have clarity on the characteristics of a behavior
        represented by a policy assertion. Some useful ways to discover relevant behaviors are
        to ask questions like the following:
        </p><ulist><item><p>Is this behavior a requirement?
            </p></item><item><p>Is the behavior visible?
            </p><p>A visible behavior refers to a requirement that manifests itself on the wire. Web services
            	provide interoperable machine-to-machine interaction among disparate systems. Web
            	service interoperability is the capability of disparate systems to exchange data using
            	common data formats and protocols supporting characteristics such as messaging, security, 
            	reliability and
            	transaction. Such data formats and protocols manifest on the wire. Providers and
            	requesters rely on wire messages conforming to such formats and protocols
            	to achieve interoperability. 
            	</p><p>
          		If an assertion describes a behavior that does not manifest on the wire then the assertion will not impact the 
          		interoperability of wire messages, but may still be relevant to enabling an interoperable interaction. 
          		For example, a provider may not wish to interact unless a client can accept an assertion describing provider behavior. 
          		An example is an assertion that describes the privacy notice information of a provider and the associated regulatory 
          		safeguard in place on the provider's side. For cases where the provider does not intend the assertion to impact 
          		interoperability it may mark it as ignorable.
          	</p><p>If an assertion has no wire or message-level visible behavior then the interacting
            	participants may require some sort of additional mechanism to indicate
            	compliance with the assertion and to enable dispute resolution. 
            	Introducing an additional non-repudiation mechanism adds
            	unnecessary complexity to processing a policy assertion.
            	</p></item><item><p>Does the behavior apply to two or more Web service participants?
            </p><p>A shared behavior refers to a requirement that is relevant to an interoperable Web service interaction and involves 
          		two or more participants. If an assertion only describes one participant's behavior the assertion may still be relevant to 
          		enabling an interoperable interaction.  
          		An example is the use of logging or auditing by the provider. If an assertion only describes one participant's behavior then 
          		the assertion may be marked as ignorable (indicating it does not impact interoperability). An ignorable policy assertion is 
          		ignored for lax policy intersection. If an assertion is not an ignorable assertion then it is deemed important for agreement 
          		between both parties.
          	</p></item><item><p>Does the behavior have an implied scoping to a policy subject such as service, endpoint, operation and message?
            	</p></item><item><p>Is there a requirement that a choice must be made for successful interaction?</p><p>Sometimes providers and requesters are required to engage in certain behaviors. 
          			The use of optimization and reliable messaging are two examples.
          		</p></item></ulist><p>There are already many examples in the industry that adhere to the above practices, such as <bibref ref="WS-RM-Policy"/>
      	and <bibref ref="WS-SecurityPolicy"/>. Some common characteristics from these documents may be considered as <emph>best practices</emph> for new Assertion Authors:
      	</p><ulist><item><p>Specify both the syntax and the semantics of the assertions
               		</p></item><item><p>If nested or parameterized assertions are defined, be clear about their usage
               		</p></item><item><p> Describe the policy subjects the assertions can be attached to. 
               		</p></item></ulist><p>In this document we will explain why these practices should
      	be followed so that the assertion developers defining such a
      	specification will be well informed and able to adequately specify assertions for their domain.
      	</p><p>It is expected that consumers of the metadata specified by
     	the Assertion Authors will also benefit from understanding these
      	practices as it will help them utilize the assertions in the
      	context of the WS-Policy framework. A result of following the
      	best practices will be an assertion specification that describes
      	a contract for the consumers and providers of the capabilities and constraints of the domain.
      	</p></div1><div1 id="assertion-authors"><head>Who is involved in authoring Assertions? </head><p>In order for the policy framework to enable communities to
		express their own domain knowledge, it is necessary to provide basic
		functionality that all domains could exploit and then allow
		points of extension where authors of the various WS-Policy
		assertions for a particular domain can provide additional semantics.
        </p><p>Some policy assertions specify traditional
      	requirements and capabilities that will ultimately manifest on
      	the wire (e.g., authentication scheme, transport protocol selection). Other policy assertions have no wire manifestation
      	yet are critical to proper service selection and usage (e.g.,
      	privacy policy, QoS characteristics). WS-Policy provides a
      	single policy grammar to allow both kinds of assertions to be reasoned about in a consistent manner.
      	</p><div2 id="roles"><head> Roles and Responsibilities </head><p>Below we capture some of the characteristics of the roles
        	and responsibilities for the authors, consumers and providers.
        	</p><div3 id="domain-owners"><head> Assertion Authors</head><p>Assertion Authors are part of a community that chooses to
        		exploit the WS-Policy Framework by creating their own
        		specifications to define a set of assertions that express the
        		capabilities and constraints of that target domain. The
        		WS-Policy Framework is based on a declarative model, meaning
        		that it is incumbent on the Assertion Authors to define both the semantics of 
        		the assertions as well as the scope of their target domain in their specification. The set
        		of metadata for any particular domain will vary in the granularity of assertion
        		specification required.  It is the intent of
        		this document to help communities utilize the framework in such
       			 a way that multiple WS-Policy domains can co-exist and
       			consumers and providers can utilize the framework consistently across domains.
				</p><p>Assertion authors should review the conformance sections of the
						WS-Policy Framework and Attachment specifications and an assertion must adhere
						to all the constraints contained in the Framework and Attachment
						specifications.
    	    	</p><p>Assertion Authors should also specify a policy subject. For
				instance, if a policy assertion were to be used with WSDL, an assertion
				description should specify a WSDL policy subject.
				</p><p>An example of a domain specification that follows these practices is the WS-SecurityPolicy
        		specification [<bibref ref="WS-SecurityPolicy"/>]. The
        			WS-SecurityPolicy authors have defined the scope of their
        			target domain (security) as follows:
        		</p><p><emph>"This document [WS-SecurityPolicy] defines a set of
        		security policy assertions for use with the WS-Policy
        		framework with respect to security features provided in WSS:
        		SOAP Message Security, WS-Trust and WS-SecureConversation. This document takes the approach of
        		defining a base set of assertions that describe how messages
        		are to be secured. Flexibility with respect to token types,
        		cryptographic algorithms and mechanisms used, including using
        		transport level security is part of the design and allows for
        		evolution over time. The intent is to provide enough
        		information for compatibility and interoperability to be
        		determined by web service participants along with all
        		information necessary to actually enable a participant to
        		engage in a secure exchange of messages." </emph>
				</p><p>An example of scoping individual assertions to policy subjects is also provided by the WS-Security Policy specification in Appendix A.
				</p></div3><div3 id="consumers"><head>Consumers</head><p>A consumer of WS-Policy
				Assertions can be any entity that is capable of parsing a
				WS-Policy XML expression and selecting one alternative from the
				policy. This selected alternative is then used to govern the creation of a message
				to send to the subject to which the policy alternative was
				attached.  The WS-Policy Attachment specification defines a
				set of attachment mechanisms for use with common web service
				subjects: WSDL definitions [<bibref ref="WSDL11"/>, <bibref ref="WSDL20"/>], and UDDI directory entries [<bibref ref="UDDIAPI20"/>, <bibref ref="UDDIDataStructure20"/>,
				<bibref ref="UDDI30"/>].
       		 	</p><p> 
				In the degenerate case, a human could read the XML and
				determine if a message could be constructed conformant to the
				advertised policy.
        		</p><p>It is expected that consumers of WS-Policy will include a
     		   	wide range of client configurations, from stand alone client
     		   	applications to "active" web service requesters that are
				capable of adapting to the constraints and capabilities
				expressed in a WS-Policy document and modifying their own
      			configurations dynamically.
        		</p></div3><div3 id="providers"><head>Providers</head><p>A provider who expresses capabilities and requirements of a Web service
				as policies can be any web service implementation that can
	   			specify its on-the-wire message behavior as a policy
				expression that conforms to the Web Services Policy 1.5 - Framework [<bibref ref="WS-Policy"/>]
				and Web Services Policy 1.5 - Attachment [<bibref ref="WS-PolicyAttachment"/>] specifications.
				The Web Services Policy 1.5 - Attachment specification has defined a set of
	   			subjects and an extensible mechanism for attaching policies
	   			to web services subjects. 
           		</p><p>When deploying services with policies it is useful for providers to anticipate how
           		to evolve their services capabilities over time.  If
           		forward compatibility is a concern in order to accommodate
           		compatibility with different and potentially new clients,
           		providers should refer to <specref ref="versioning-policy-assertions"/> and
           		<bibref ref="WS-Policy-Primer"/> that describes service and
           		policy assertion evolution.
	   			</p></div3></div2></div1><div1 id="general-guidelines"><head>General Guidelines for Assertion Authors</head><p> As Assertion Authors begin the task of inventing XML dialects to represent policy  assertions they can take
		advantage of WS-Policy building on XML principles and XML Schema validation in their design. WS-Policy 
		relies on the QName of a policy assertion being an XML element but allows Assertion Authors to optionally  
		provide additional semantics through nesting assertions, or specifying assertion parameters.
		This section covers several aspects of assertion design and provides some answers to the following questions:</p><ulist><item><p>What is the intended use of the policy assertion?</p></item><item><p>Which authoring style will be used?</p></item><item><p>Is this a new policy domain? Does it need to compose with other domains?</p></item><item><p>How complex are the assertions?</p></item><item><p>Is there a need to consider nesting?</p></item><item><p>Do optional behaviors need to be represented?</p></item></ulist><div2 id="assertion-target"><head>Assertions and Their Target Use</head><p>
				Assertion Authors should understand the functionality that the WS-Policy
				framework provides and apply the knowledge of the policy framework processing
				when defining the set of assertions. 
				</p><p>
				Assertions can be simple or they can be complex. Assertion Authors may choose
				to specify multiple peer assertions, each carrying the semantic of a particular
				behavior, or they may choose to specify assertions that contain assertion parameters
				and/or nested policy expressions (nested assertions), where each nested assertion of which 
				relates to an aspect of the behavior, yet encapsulated within a single assertion.
				There are advantages to simplifying the set of assertions. The ultimate goal of
				policy is to enable interoperability. By keeping assertion design as simple as
				possible, Assertion Authors will more likely be able to meet that objective.
				</p><p>
				Assertion Authors need to have a specific goal in mind for the assertions
				that they author. Assertion specifications should include a detailed specification
				of the assertion’s semantics and a set of valid policy subjects to which the assertion
				maybe attached. The specification should also include the scope of the assertion
				in the context of a particular policy subject. For example, an assertion with
				Endpoint Policy Subject can be scoped to a given message exchange with that endpoint,
				or it can be scoped to all messages exchanged with that endpoint. The former case
				permits a client to select a different alternative with each successive message
				exchange. Finally,
				the ability to combine individual assertions may also need to be considered.
				For example, if an assertion applies to the SOAP protocol, it would be necessary
				to consider how its presence must interact with other policy assertions that
				are defined for security.
				</p><p>Assertion Authors should include the following items in an 
					assertion specification:
					</p><p>
					<ulist><item><p>The definition of the assertion's semantic 
							(See best practice <specref ref="AssertionDefinitions"/>).</p></item><item><p>The specification of the set of valid policy subjects to which an 
							assertion may be attached
							(See best practice <specref ref="bp-WSDL-policy-subject"/>).</p></item><item><p>The scope of the assertion in the context of a particular policy 
							subject (See best practices in Section <specref ref="levels-of-abstraction"/>).</p></item><item><p>Any composition considerations if the assertion is used with
						other assertions in a context
							(See best practice <specref ref="bp-specify-composition"/>).</p></item></ulist>
				</p><p>
				The WS-Policy Attachment specification defines a number of different 
				policy subjects to which an assertion can be attached. For attaching to 
					WSDL subjects see <specref ref="levels-of-abstraction"/> for more detail. 
				Additionally, the framework provides for the means to extend the set of 
				policy subjects beyond the set of subjects defined in the WS-Policy 
				Attachment specification.
				</p><p role="practice" id="bp-compatibility-tests">
					<quote>Define assertions relevant to compatibility tests</quote>
					<quote>
						Assertion authors should define assertions for behaviors that are relevant to compatibility assessment, such as web service protocols that manifest on the wire.
					</quote>
				</p><p>Assertion authors may define assertions that are not related to compatibility assessment.  These assertions may be used to accurately describe behaviour, even if they do not affect compatibility.  WS-Policy has the wsp:Ignorable attribute that may be used for indicating assertions that are not related to compatibility assessment, described in <specref ref="Ignorable"/></p><p role="practice" id="bp-ignorable-for-not-related-to-compatibility-tests">
					<quote>Mark Ignorable Assertions not related to compatibility</quote>
					<quote>
						Assertion authors should recommend that assertions that are not relevant to compatibility assessment be marked with the wsp:Ignorable attribute.
					</quote>
				</p></div2><div2 id="compact-full"><head>Authoring Styles </head><p>WS-Policy supports two different authoring styles, compact form and
				normal form. A compact form is one in which an expression consists of
				three constructs: an attribute to decorate an assertion (to indicate
				whether it is required or optional), semantics for recursively nested
				policy operators, and a policy reference/inclusion mechanism.
				A policy expression in the compact form can be translated into its
				normal form using the policy normalization algorithm described in the
				Web Service Policy Framework (see section 4.3 Compact Policy
				Expression). 
			</p><p>The two forms of a policy expression are semantically
				equivalent. When multiple alternatives are present in a policy, the
				normal form may express the choices more explicitly. On the other hand,
				the compact form may be more readable for humans when an assertion is
				marked as optional using the <code>wsp:optional</code> attribute.
				A policy processor may normalize a policy expression originally authored
				in compact form at any time without changing the semantics of the
				policy. In general, it is not possible to guarantee in what form a
				policy expression would be when it is processed. As a result, the
				description for a policy assertion should not depend on the style used
				to author a policy expression that contains the assertion.
			</p><p role="practice" id="bp-semantics-and-form">
				<quote>Semantics Independent of the Form</quote>
				<quote>The semantics of an assertion should be independent of
					the form (compact or normal form) of policy expressions that contain the
					assertion.</quote>
			</p><p>
				In the example below, the policy expression is shown in its two forms,
				compact and normal. In compact form, the <code>wsrmp:RMAssertion</code> assertion
				is augmented by the <code>wsp:Optional="true"</code> attribute.
				While the compact form of the expression might be more human readable, the semantics of the
				particular assertion are independent of the form and of the presence (or absence)
				of the <code>wsp:optional</code> attribute.
			</p><example><head>Policy Expression in Compact Form</head><eg xml:space="preserve">&lt;wsp:Policy xmlns:wsp='http://www.w3.org/ns/ws-policy'
	xmlns:sp='http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702'
	xmlns:wsrmp='http://docs.oasis-open.org/ws-rx/wsrmp/200608'&gt;
&lt;wsrmp:RMAssertion wsp:Optional="true"/&gt;
  &lt;wsp:ExactlyOne&gt;
    &lt;wsp:All&gt;
      &lt;sp:TransportBinding&gt;
        &lt;wsp:Policy&gt;
          &lt;sp:TransportToken&gt;
            &lt;wsp:Policy&gt;
	          &lt;sp:HttpsToken&gt;
	            &lt;wsp:Policy&gt;
	             &lt;sp:RequireClientCertificate/&gt;
	            &lt;/wsp:Policy&gt;
	          &lt;/sp:HttpsToken&gt;
            &lt;/wsp:Policy&gt;
          &lt;/sp:TransportToken&gt;
        &lt;/wsp:Policy&gt;
      &lt;/sp:TransportBinding&gt;
    &lt;/wsp:All&gt;
  &lt;/wsp:ExactlyOne&gt;
&lt;/wsp:Policy&gt;</eg></example><example><head>Policy Expression in Normal Form</head><eg xml:space="preserve">&lt;wsp:Policy xmlns:wsp='http://www.w3.org/ns/ws-policy'
	xmlns:sp='http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702' 
	xmlns:wsrmp='http://docs.oasis-open.org/ws-rx/wsrmp/200608'&gt;
  &lt;wsp:ExactlyOne&gt; 
    &lt;wsp:All&gt;
      &lt;wsrmp:RMAssertion/&gt;
      &lt;sp:TransportBinding&gt;
        &lt;wsp:Policy&gt;
          &lt;sp:TransportToken&gt;
            &lt;wsp:Policy&gt;
	          &lt;sp:HttpsToken&gt;
	            &lt;wsp:Policy&gt;
	              &lt;sp:RequireClientCertificate/&gt;
	            &lt;/wsp:Policy&gt;
	          &lt;/sp:HttpsToken&gt;
            &lt;/wsp:Policy&gt;
          &lt;/sp:TransportToken&gt;
        &lt;/wsp:Policy&gt;
      &lt;/sp:TransportBinding&gt;
    &lt;/wsp:All&gt;
          
    &lt;wsp:All&gt;
      &lt;sp:TransportBinding&gt;
        &lt;wsp:Policy&gt;
          &lt;sp:TransportToken&gt;
            &lt;wsp:Policy&gt;
	          &lt;sp:HttpsToken&gt;
	            &lt;wsp:Policy&gt;
	              &lt;sp:RequireClientCertificate/&gt;
	            &lt;/wsp:Policy&gt;
	          &lt;/sp:HttpsToken&gt;
            &lt;/wsp:Policy&gt;
          &lt;/sp:TransportToken&gt;
        &lt;/wsp:Policy&gt;
      &lt;/sp:TransportBinding&gt;
    &lt;/wsp:All&gt;
  &lt;/wsp:ExactlyOne&gt;
&lt;/wsp:Policy&gt;</eg></example></div2><div2 id="new-guidelines-domains"><head>Considerations when Modeling New Assertions</head><p>When creating a new policy domain, it is important to
         		understand how policy expressions are used by a
	        	framework implementation that has followed the specifications. 
	        	</p><p>The examples given in this document are
					based on existing assertions such as WS-SecurityPolicy and WS-RM Policy.
	        	These policy expressions represent web services message exchange requirements, but policy authoring can
	        	be done by individual groups that wish to represent web services application requirements and
         		deployments that wish to reuse the WS-Policy framework in
         		order to enable dynamic negotiation of business requirements
         		and capabilities at runtime.
         		</p><div3 id="minimal-approach"><head>Minimal approach</head><p>New Assertion Authors are encouraged to try to not overload assertions. A single assertion indicates a single
        		 	behavior. Sets of assertions can by grouped by an operator "All". This indicates that there is a relationship between
         			the assertions. 
         			</p><p>If grouping is utilized, choices between such groupings can be indicated by
         			an "ExactlyOne" operator. This basic set of operators allows
         			Assertion Authors a wide range of options for expressing the possible combinations of assertions within their domain.
         			</p><p>It requires a good deal of effort to evaluate the
         			capabilities of a domain and capture them in a way that
         			reflects the options of the domain if the domain has a lot of
         			assertions to define.  Interoperability testing of new policy
         			domains is recommended to ensure that consumers and providers
         			are able to use the new domain assertions. To facilitate proper 
					progression of an assertion, Assertion Authors should start with 
					a simple working assertion that allows extensibility. As the design 
					work progresses, one may add more parameters or nested policy assertions 
					to meet one's interoperability needs. 
         			</p><p role="practice" id="bp-assertion-start"><quote>Start with a Simple Assertion</quote>
          				<quote>Assertion Authors should start with a simple working assertion 
          				that allows assertion parameter extensibility. </quote>
          			</p><p>New Assertion Authors are encouraged to look at <bibref ref="WS-RM-Policy"/> to see an example of a
         			relatively simple domain that has defined three assertions. Assertion Authors are encouraged to look at <bibref ref="WS-SecurityPolicy"/> to see an example of a complex domain that has been decomposed into a set of policy expressions.
        			</p></div3><div3 id="QName_and_XML_Information_Set_representation"><head>QName and XML Information Set representation</head><p>Web Services Policy language allows Assertion Authors to invent
            		their own XML dialects to represent policy assertions. The policy language relies only
            		on the policy assertion XML element QName. This QName is unique and identifies the
            		behavior represented by a policy assertion.  Assertion Authors have the option to
            		represent an assertion parameter as a child element (by leveraging natural XML nesting)
            		or an attribute of an assertion. The general guidelines on when to use XML elements
          			versus attributes apply. Use a unique QName to identify a distinct behavior.</p><p role="practice" id="bp-unique-qnames"><quote>Use Unique QNames</quote>
            			<quote>Assertion Authors should use a unique QName to identify a distinct behavior.</quote> </p><p role="practice" id="XMLOutline"> <quote>Provide an XML definition</quote> &gt;
        				<quote>Assertion authors should provide an XML schema definition to
        					specify the syntax of an assertion. A reader-friendly description such as an
        					XML outline (see below) is also useful.
			  	    </quote>
			  	    </p><p> An example of a specification that provides an XML Outline is the Web Services
        				Reliable Messaging Policy document [<bibref ref="WS-RM-Policy"/>].
        				The definition of the outline syntax used in that specification is found in its
        				Terminology section (1.1). As an example of the outline syntax in use, the
        				following outline has been copied from the aforementioned specification.
            		</p><example><eg xml:space="preserve">
 &lt;wsrmp:RMAssertion [wsp:Optional="true"]? ...&gt; 
   &lt;wsp:Policy &gt;
     [ &lt;wsrmp:SequenceSTR/&gt; |
       &lt;wsrmp:SequenceTransportSecurity/&gt; ] ?
     &lt;wsrmp:DeliveryAssurance/&gt; 
       &lt;wsp:Policy &gt;
        [ &lt;wsrmp:ExactlyOnce/&gt; | 
          &lt;wsrmp:AtLeastOnce/&gt; |
          &lt;wsrmp:AtMostOnce/&gt; ]
        &lt;wsrmp:InOrder/&gt; ?
       &lt;/wsp:Policy&gt;
     &lt;/wsrmp:DeliveryAssurance&gt; ] ?
    &lt;/wsp:Policy&gt;
 &lt;/wsrmp:RMAssertion/&gt;
 </eg></example><p>The syntax of an assertion can be represented using an XML outline (plus an XML schema
            		document). If the assertion has a nested policy expression then the assertion XML
            		outline can enumerate the nested assertions that are allowed. An example is the following:
            		</p><example><eg xml:space="preserve">
 &lt;sp:IssuedToken sp:IncludeToken="xs:anyURI"? ... &gt;
  &lt;sp:Issuer&gt; wsa:EndpointReferenceType&lt;/sp:Issuer&gt;?
  &lt;sp:RequestSecurityTokenTemplate TrustVersion="xs:anyURI"? &gt;
    ...
  &lt;/sp:RequestSecurityTokenTemplate &gt;
  &lt;wsp:Policy &gt;
    &lt;sp:RequireDerivedKeys /&gt; ?
    &lt;sp:RequireExternalReference /&gt; ?
    &lt;sp:RequireInternalReference /&gt; ?
    ...
  &lt;/wsp:Policy&gt; ?
  ...
&lt;/sp:IssuedToken&gt;
 
 </eg></example><p role="practice" id="AssertionDefinitions"> <quote>Specify Semantics Clearly</quote> &gt;
 			  	    	<quote> Assertion authors should clearly and completely specify the
 			  	    	 semantics of a policy assertion.
			  	    </quote>
			  	    </p><p role="practice" id="DefineIgnorable"><quote>Document Ignorable Behavior</quote> &gt;
			  	    <quote>An assertion description should include guidance as to the use of (or 
constraint against the use of) the wsp:Ignorable attribute to indicate 
whether or not the behavior indicated by the QName may be ignored by policy 
intersection. </quote>
			  	    </p><p role="practice" id="ignorableAssertions"> <quote>Document Use of the Ignorable 
Attribute in XML </quote> &gt;
			  	    <quote> An Assertion Author should document, in the XML outline and/or schema for 
the assertion, whether or not the assertion allows for the use of the wsp:Ignorable attribute. 
			  	    </quote>
			  	    </p><p>				The Policy Framework provides two modes of authoring policy expressions:
compact and normal form. One of the mechanisms that the Policy Framework
provides to policy authors for purposes of writing compact policy 
	expressions is the <code>wsp:Optional</code> attribute. Assertion Authors should allow 
for the use of the <code>wsp:Optional</code> attribute in the XML outline and/or schema 
definition of an assertion as this will allow policy expression authors to 
compose compact policy expressions.</p><p role="practice" id="bp-assertion-xml-allow-optional">
					<quote>Assertion Authors should allow use of wsp:Optional</quote>
					<quote>An assertion's XML outline and/or schema definition should allow the use 
of the wsp:Optional attribute so as to enable policy authors to compose 
compact policy expressions.</quote>
				</p><p>For example, consider the following two equivalent policy expressions:</p><example><head>Normal form expression:</head><eg xml:space="preserve">&lt;wsp:Policy&gt;
  &lt;wsp:ExactlyOne&gt;
    &lt;wsp:All&gt;
    &lt;wsam:Addressing&gt;
        &lt;wsp:Policy/&gt;
    &lt;/wsam:Addressing&gt;
    &lt;/wsp:All&gt;
    &lt;wsp:All&gt;
    &lt;/wsp:All&gt;
  &lt;/wsp:ExactlyOne&gt;
&lt;/wsp:Policy&gt;</eg></example><example><head>Compact form expression:</head><eg xml:space="preserve">&lt;wsp:Policy&gt;
    &lt;wsam:Addressing wsp:Optional="true"&gt;
        &lt;wsp:Policy/&gt;
    &lt;/wsam:Addressing&gt;
&lt;/wsp:Policy&gt;</eg></example><p>
If the assertion author had not provided for the <code>wsp:Optional</code> attribute
to be included on the assertion, then policy expression authors would be forced to
express the optionality of a behavior as two explicit policy alternatives,
one with and one without that assertion when including assertions of that type in their
policies.</p></div3><div3 id="self-describing"><head> Self Describing Messages </head><p> WS-Policy is intended to communicate the requirements, capabilities and
    	 			behaviors of nodes that provide the message's path, not specifically to declare properties of the message semantics. One
    	 			of the advantages of Web services is that an XML message can be stored and later examined (e.g. as a record of a business
     				transaction) or interpreted by an intermediary; however, if information that is necessary to understand a message is not
     				available, these capabilities suffer.
     				</p><p>Policy assertions should not be used to express the semantics of a  message. Rather, if a property is
     		        required to understand a message, it should be communicated in the message, or be made available by some other means (e.g., being
     			    referenced by a URI in the message) instead of being communicated as a policy element. 
     			    Note that there are other specifications that target specification of semantics of a message, such as <bibref ref="SAWSDL"/>. 
     				</p><p>If the messages could not be made self describing by utilizing additional properties present in the
    				message as required by the assertion, it would be necessary to
    				determine the behaviors engaged at runtime by additional means. A
    				general protocol that aids in determining such behaviors may be
    				utilized, however a standard protocol for this purpose is
    				currently not available to ensure interoperability. Thus, a private protocol should be used with care. 
    				</p><p>Another approach is to use of the assertion to selectively apply to subjects. For example, a
    				dedicated endpoint may be allocated to ensure the engagement of a
    				behavior that is expressed by a policy assertion. This approach
    				can be considered when messages cannot be self describing. 
     				</p><p>Policy assertions should not be used to express the semantics of a message.
     				Firstly, an assertion type indicates a <emph>runtime</emph> behavior.  Secondly, Assertion Authors need to indicate how the runtime behavior represented in the assertion type can be inferred or indicated
     				from a message at runtime.  If there is a need for the behavior
    		 		to be represented in a persistent way or if there is a need for
     				additional data or metadata that is present in a message to be
     				persisted, it should be incorporated into the assertion design or
     				in the message itself. In essence, the Assertion Authors should
     				consider how to make messages self describing when utilizing
     				their assertions by specifying additional properties, headers,
     				etc. that must be present in a message as part of their assertion design.
     				</p><p role="practice" id="bp-not-necessary-to-understand-a-message">
        				<quote>Assertions should not describe message
        					semantics</quote>
        				<quote>Assertion Authors should not define policy assertions to represent information that is necessary to understand a message.</quote>
        			</p><p>For example, if the details of a message's encryption ( e.g., the cipher used, etc) are expressed
     				in policy that isn't attached to the message, it isn't possible
     				to later decipher it. This is very different from expressing, in
     				policy, what ciphers (and so forth) are supported by a particular
     				endpoint, or those that are required in a particular message; the
     				latter are the intended uses of the WS-Policy framework.
     				</p></div3><div3 id="single-domains"><head>Single Domains</head><p>When considering the creation of a
      			  	new domain of policy assertions, it is important to identify
       			 	whether or not the domain is self-contained or at least if a
        			subset of the domain can be well defined.  A domain that
        			expresses a broad set of capabilities will also need to have a
        			community supporting implementations  of these capabilities to provide value to the
        			consumers.  Ultimately it is the consumers and providers that
        			will determine whether a particular set of assertions
        			correctly characterize a domain.  A new community should avoid
        			duplicating assertions that have already been defined as this
        			will create ambiguity not clarification. New Assertion Authors
        			should focus on creating assertions for those specific
        			constraints and capabilities that do not overlap with other
        			domains but that communicate new functionality. 
        			</p><p>The model advocated for new
					assertion development is a cooperative marketplace
					[some might say it is an "opt-in" model]. The providers
					of services need to find value in the set of
					assertions or they will not include the assertions in
					their service descriptions. 
					</p><p>It is the responsibility of the Assertion Authors to avoid duplication of assertions. 
					A review by a broad community is the best way to ensure that the granularity of a set 
					of domain assertions is appropriate.</p><p role="practice" id="bp-assertion-duplication"><quote>Avoid Duplication of Assertions</quote>
        				<quote>Assertion Authors should reuse an existing assertion (rather than create a new one) whenever possible.</quote>
            		</p></div3><div3 id="order-of-behaviors"><head>Order of Behaviors</head><p>	A policy alternative is a collection of zero or more policy assertions. 
				Assertions within a policy alternative are not ordered.</p><p>The order of assertions in a policy alternative and order in which behaviors
				(indicated by assertions) are applied are two distinct concepts. The order of 
				assertions in a policy alternative has no bearing on the order in which behaviors are applied.</p><p>Specifying the order in which behaviors are applied is outside the scope of the Web Services 
				Policy Framework. However, the Framework says that assertion authors can write assertions that 
				indicate the order in which behaviors are applied.</p><p>According to the SOAP processing model, the order of headers and body processing 
				(for behaviors such as addressing, security, reliability and transaction) is at the discretion 
				of the SOAP node and SOAP-based protocols may be used to control the order of processing. </p><p>The Web Services Security specification provides producers with a choice of signing a message 
				before encrypting or signing a message after encrypting. That is, WS-Security 1.1, section 8 says, 
				lines 1173-1183 - says "Finally, if a producer wishes to sign a message before encryption, then 
				following the ordering rules laid out in section 5, "Security Header", they SHOULD first prepend 
				the signature element to the <code>wsse:Security</code> header, and then prepend the encryption element, ... 
				Likewise, if a producer wishes to sign a message after encryption, they SHOULD first prepend the 
				encryption element to the <code>wsse:Security</code> header, and then prepend the signature element."  </p><p>The Web Services Security Policy specification provides assertions which let users control 
				whether to sign the message before encrypting or sign it after encrypting. </p><p>In the example below, the SignBeforeEncrypting assertion requires producers to sign a message 
				before encrypting.</p><example><head>SignBeforeEncrypting assertion</head><eg xml:space="preserve">&lt;wsp:Policy&gt;
  &lt;sp:AsymmetricBinding&gt;
    &lt;wsp:Policy&gt;
      &lt;sp:IncludeTimestamp /&gt;
      &lt;sp:SignBeforeEncrypting /&gt;
      &lt;sp:EncryptSignature /&gt;
      &lt;sp:ProtectTokens /&gt;
    &lt;wsp:Policy/&gt;
  &lt;/sp:AsymmetricBinding&gt;
  &lt;wsam:Addressing&gt;...&lt;/wsam:Addressing&gt;
&lt;/wsp:Policy&gt; </eg></example><p>In the example below, the EncryptBeforeSigning assertion requires producers 
				to sign a message after encrypting. </p><example><head>EncryptBeforeSigning assertion</head><eg xml:space="preserve">&lt;wsp:Policy&gt;
  &lt;sp:AsymmetricBinding&gt;
    &lt;wsp:Policy&gt;
      &lt;sp:IncludeTimestamp /&gt;
      &lt;sp:EncryptBeforeSigning /&gt;
      &lt;sp:EncryptSignature /&gt;
      &lt;sp:ProtectTokens /&gt;
    &lt;wsp:Policy/&gt;
  &lt;/sp:AsymmetricBinding&gt;
  &lt;wsam:Addressing&gt;...&lt;/wsam:Addressing&gt;
&lt;/wsp:Policy&gt; </eg></example></div3></div2><div2 id="comparison"><head>Comparison of Nested and Parameterized Assertions</head><p>There are two different ways to provide additional information
					in an assertion beyond its type: assertion parameters and nested policy
					expressions. We cover these two cases below followed by a comparison of these
					approaches targeting when to use either of the two approaches.</p><p>The main consideration for choosing between use of parameters or nested policy
					expressions is that the framework intersection algorithm processes nested
					policy expressions, but does not consider parameters in the algorithm.
				</p><div3 id="parameterized-assertions"><head>Assertions with Parameters</head><p>Policy assertion parameters are the opaque payload of an assertion. 
					Parameters carry additional useful information for engaging the 
					behavior described by an assertion and are preserved through policy 
					processing such as normalization, merge and policy intersection. 
					Requesters may use policy intersection to select a compatible 
					policy alternative for an interaction. Assertion parameters do not 
					affect the outcome of policy intersection unless the assertion specifies 
					domain specific processing for policy intersection.</p><p>In the XML representation of a policy assertion, the child elements 
					and attributes of the assertion excluding child elements and attributes 
					from the policy language namespace name are the assertion parameters.</p><p role="practice" id="bp-assertion-parameters"><quote>Use Parameters for Useful 
					Information</quote>
						<quote>Assertion Authors should represent useful additive 
                        information necessary for engaging the behavior represented by a policy 
                        assertion as assertion parameters.	
						</quote> 
					</p><p>In the example below, <code>sp:Body</code> and <code>sp:Header</code> 
                     elements are the two assertion parameters of the 
                     <code>sp:SignedParts</code> policy assertion 
                     (this assertion requires the parts of a message to be protected).
				     These two parameters identify the parts of a wire message that should be 
				     protected. These parameters carry additional useful information for 
				     engaging the behavior.</p><example><head>Policy Assertion with Assertion Parameters</head><eg xml:space="preserve">&lt;wsp:Policy&gt;
  &lt;sp:SignedParts&gt;
    &lt;sp:Body/&gt;
    &lt;sp:Header/&gt;
  &lt;/sp:SignedParts&gt;
&lt;/wsp:Policy&gt;</eg></example></div3><div3 id="nested-assertions"><head>Nested Assertions</head><p>The framework provides the ability to "nest" policy assertions. For domains with a complex set of
        				options, nesting provides one way to indicate dependent
        				elements within a behavior.   In particular, when assertion authors define an assertion
type that allows nested policy expression, it is important to also define the
semantics of that assertion when it contains an empty nested policy expression
(for example: &lt;wsam:Addressing&gt;&lt;wsp:Policy/&gt;&lt;/wsam:Addressing&gt;).</p><p>
						The following design questions below can help
						to determine when to use nested policy expressions:</p><ulist><item><p>Are these assertions designed for the same policy subject? </p></item><item><p>Do these assertions represent dependent behaviors?</p></item></ulist><p>If the answers are yes to both of these questions then leveraging nested policy
						expressions is something to consider. Keep in mind that a nested policy expression participates in
						the policy intersection algorithm. If a requester uses policy intersection to select a
						compatible policy alternative then the assertions in a nested policy expression play a
						first class role in the outcome. If there is a nested policy expression, an assertion 
						description should declare it and enumerate the nested policy assertions 
						that are allowed. There is one caveat to watch out for: policy assertions
						with deeply nested policy can greatly increase the complexity of a policy and should be
						avoided when they are not needed.</p><p role="practice" id="bp-dependent-behaviors">
					<quote>Use Nested Assertions for Dependent Behaviors</quote>
					<quote>Assertion Authors should represent dependent behaviors that are relevant 
						to a compatibility test and apply to the same policy subject using 
						nested policy assertions.</quote></p><p role="practice" id="bp-declare-nested-assertions">
						<quote>Enumerate Nested Assertions</quote>
						<quote>If there is a nested policy expression, then the Assertion Authors 
						should enumerate the nested policy assertions that are allowed.</quote>
					</p><p>Assertion Authors should recognize that the framework can
						yield multiple assertions of the same type. The <emph>QName</emph>
						of the assertion is the only vehicle for the framework to
						match a specific assertion, NOT the contents of the
						element. If the assertion is a parameterized assertion the
						authors must understand that this type of assertion will
						require additional processing by consumers in order to
						disambiguate the assertions or to understand the semantics of
						the name value pairs, complex content, attribute values
						contribution to the processing.  The tradeoff is the generality
						vs. the flexibility and complexity of the comparison expected for a domain. </p><p>If the assertion
						authors want to delegate the processing to the framework,
						utilizing nesting should be considered. Otherwise, domain
						specific comparison algorithms may need to be devised and be
						delegated to the specific domain handlers that are not visible
						to the WS-Policy framework. However, domain specific intersection processing reduces 
						interop and increases the burden to implement an assertion.</p><p role="practice" id="bp-discourage-domain-specific-intersection">
						<quote>Discourage Domain Specific Intersection</quote>
						<quote>Assertion authors should only specify domain specific 
						intersection semantics when policy intersection is insufficient.</quote></p><p>We will use the WS-SecurityPolicy to illustrate the use of nested assertions.
        				</p><p>Securing messages is a complex usage scenario. The WS-SecurityPolicy Assertion Authors have defined the
        				<code>sp:TransportBinding</code> policy assertion to indicate
       					 the use of transport-level security for protecting
        				messages. Just indicating the use of transport-level security
        				for protecting messages is not sufficient. To successfully
        				interact with a Web service, the consumer must know not only
        				that transport-level security is required, but also the
        				transport token to use, the secure transport to use, the
        				algorithm suite to use for performing cryptographic
        				operations, etc. The <code>sp:TransportBinding</code> policy
        				assertion can represent these dependent behaviors.
        				</p><p>A policy assertion like the <code>sp:TransportBinding</code>
        				identifies a visible behavior that is a requirement. A nested
        				policy expression can be used to enumerate the dependent
        				behaviors on the Transport binding. A nested policy expression
        				is a policy expression that is a child element of another
        				policy assertion element. A nested policy expression further
        				qualifies the behavior of its parent policy assertion.
        				</p><p>In the example below, the child Policy element is a nested
        				policy expression and further qualifies the behavior of the
        				<code>sp:TransportBinding</code> policy assertion. The
        				<code>sp:TransportToken</code> is a nested policy assertion of
        				the <code>sp:TransportBinding</code> policy assertion. The
        				<code>sp:TransportToken</code> assertion requires the use of a
        				specific transport token and further qualifies the behavior of
        				the <code>sp:TransportBinding</code> policy assertion (which
        				already requires the use of transport-level security for
        				protecting messages).
        				</p><example><head>Transport Security Policy Assertion</head><eg xml:space="preserve">&lt;sp:TransportBinding&gt;
  &lt;Policy&gt;
    &lt;sp:TransportToken&gt;
      &lt;Policy&gt;
        &lt;sp:HttpsToken&gt;
          &lt;wsp:Policy/&gt;
        &lt;/sp:HttpsToken&gt;
      &lt;/Policy&gt;
    &lt;/sp:TransportToken&gt;
    &lt;sp:AlgorithmSuite&gt;
      &lt;Policy&gt;
        &lt;sp:Basic256Rsa15/&gt;
      &lt;/Policy&gt;
    &lt;/sp:AlgorithmSuite&gt;
  &lt;/Policy&gt;
&lt;/sp:TransportBinding&gt;</eg></example><p>The <code>sp:AlgorithmSuite</code> is a nested policy assertion of
           				 the <code>sp:TransportBinding</code> policy assertion. The <code>sp:AlgorithmSuite</code>
          				assertion requires the use of the algorithm suite identified by its nested policy
          				assertion (<code>sp:Basic256Rsa15</code>
						<emph>in the example above</emph>) and further qualifies the behavior of the
            			<code>sp:TransportBinding</code> policy assertion.
            			</p><p>Setting aside the details of using transport-level
        				security, a policy-aware client that recognizes this policy
        				assertion can engage transport-level security and its
       					dependent behaviors automatically. This means the complexity of
        				security usage is absorbed by a policy-aware client and hidden
        				from Web service application developers.
        				</p><p>Assertion Authors should note the effect of nested policy expressions
						on policy intersection in their nested policy design. The result of
						intersecting an assertion that contains an empty nested policy
						expression with an assertion of the same type without a nested policy
						expression is that the assertions are not compatible. Therefore, when
						providers require dependent behaviors these behaviors should be
						explicitly specified as assertions in a nested policy expression. When
						the definition of an assertion allows for nested dependent behaviors,
						but the use of the assertion only contains an empty nested policy
						expression, this specific use indicates the specification of no nested
						dependent behaviors. This use must not be interpreted as being
						compatible with "any" of the nested dependent behaviors that are
						allowed by the assertion, unless otherwise specified by the assertion
						definition.</p><p>As an example, WS-Security Policy defines <code>sp:HttpToken</code> assertion to
						contain three possible nested elements, <code>sp:HttpBasicAuthentication</code>,
						<code>sp:HttpDigestAuthentication</code> and <code>sp:RequireClientCertificate</code>. When the
						<code>HttpToken</code> is used with an empty nested policy in a policy expression
						by a provider, it will indicate that none of the dependent behaviors
						namely authentication or client certificate is required.</p><example><head>Empty Nested Policy Expression</head><eg xml:space="preserve">&lt;sp:TransportToken&gt; 
  &lt;wsp:Policy&gt; 
	&lt;sp:HttpsToken&gt; 
	  &lt;wsp:Policy/&gt; 
	&lt;/sp:HttpsToken&gt; 
  &lt;/wsp:Policy&gt; 
&lt;/sp:TransportToken&gt;</eg></example><p>A non-anonymous client who requires authentication or client
						certificate will not be able to use this provider solely on the basis
						of intersection algorithm alone.</p></div3></div2><div2 id="Ignorable"><head>Designating Ignorable Behavior</head><div3><head>Ignorable behavior in authoring</head><p>  
     			The Policy Framework provides an intersection algorithm that has two defined modes for processing (lax and strict).  The Framework also defines an attribute (wsp:Ignorable) that can be used to influence whether assertions are part of the compatibility assessment between two alternatives.  [see <bibref ref="WS-Policy"/> and <bibref ref="WS-Policy-Primer"/>]. Assertion authors should consider whether the behavior represented by the Assertion they are defining can be safely ignored for the purposes of intersection, and should follow <specref ref="DefineIgnorable"/> and <specref ref="ignorableAssertions"/> to include this guidance in the assertion's definition.</p></div3><div3><head>Ignorable behavior at runtime</head><p>Regardless of whether the assertion allows the ignorable attribute, assertion authors should
			  	indicate the semantic of the runtime behavior in the description of the assertion.
			  	</p><p>
As said in <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2007/NOTE-ws-policy-primer-20071112#strict-lax-policy-intersection" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">section 3.4.1 Strict and Lax Policy Intersection</xspecref> in <bibref ref="WS-Policy-Primer"/>, "Regardless of the chosen intersection mode, ignorable assertions do not express any wire-level requirements on the behavior of consumers - in other words, a consumer could choose to ignore any such assertions that end up in the resulting policy after intersection, with no adverse effects on runtime interactions." Therefore, any assertion that is marked with ignorable should not impose any wire-level requirements on the part of consumers. Assertion Authors are reminded that regardless of whether an assertion is marked as ignorable, policy consumers using strict intersection will not 'ignore' the assertion. 
			  	</p></div3></div2><div2 id="optional-policy-assertion"><head>Designating Optional Behaviors</head><div3><head>Optional behavior at runtime</head><p> The target scope of an assertion is an important factor for
					Assertion Authors to consider as it determines the
					<emph>granularity</emph> of the scope for which the behavior 
					is to be engaged. For example, if an assertion has a scope of
					endpoint policy subject the behavior indicated by that assertion
					applies to all , messages exchanged in both directions (e.g. both
					request and response messages) with the specific endpoint  to which
					the policy alternative including that assertion is attached.
					</p><p> Certain behaviors might provide in their specification for the
					optional use of that behavior in the context of a subset of a 
					given interaction. When such optional behaviors are indicated by attaching assertions with 
					only one side of an interaction, such as an inbound message of a 
					request-response, the engagement in the context of the rest of the interaction 
					such as the outbound message, will 
					be undefined. Therefore, the Assertion Authors are encouraged to 
					consider the implications of attachment of an assertion that indicates
					such optional behavior at a message policy subject on the interaction
					as a whole. For example, if reliable messaging (RM) is applied to a request
					message because the policy attached to the inbound message in a request-response 
					operation had an alternative that incldued RM in its assertions, is the application
					of RM to the outbound message permitted, even if there is no policy
					attached to that subject? Leaving the semantics either unspecified or 
					incompletely specified may result in implementations making assumptions
					that might have undesireable consequences. 
					This is especially important if the assertion is applicable to more 
					than one specific policy subject. The approach taken by
					WS-RM Policy [<bibref ref="WS-RM-Policy"/>] is to provide for an RM
					assertion to be attached at either or both message and endpoint policy subjects.
					In order to eliminate the ambiguity associated with only using a message
					policy subject, the WS-RM Policy requires a policy to be attached to an
					endpoint policy subject as well as a message policy subject whenever a policy
					is attached to a message policy subject. 
					The combination directly addresses
					the unstated semantic that if RM is used for inbound messages, that it MAY
					be used for outbound messages, even if the assertion is not attached to the
					outbound message (and vice-versa).
				</p><p role="practice" id="bp-entire-mep-for-optional">
					<quote>Consider entire message exchange pattern when specifying Assertions that represent optional behavior related
					to a subset of that message exchange pattern when considering appropriate policy
					subject attachment points </quote>
					<quote>Assertion Authors should associate assertions that represent optional behavior
					with the appropriate policy subject and use the smallest 
						possible granularity (See Best Practice 28) to limit the degree to which optional behavior applies.</quote>
				</p><p>
					Behaviors that must be engaged in the context of an interaction must not be marked
					with wsp:Optional="true". since this creates two alternatives; one with and one without 
					that assertion. This would allow the policy consumer to select the policy alternative
					that does not contain that assertion, and thus result in an interaction that did 
					not engage the required behavior that was indicated by that assertion.
				</p><p role="practice" id="bp-limitoptional-assertion-use">
				<quote>Limit use of  an Optional Assertion</quote>
				<quote>Assertion Authors should disallow the use of the wsp:Optional
				attribute on assertions that represent behaviors that must be engaged.</quote>
				</p><p>
				Behaviors must be engaged with respect to messages that are targeted to the 
				provider so that the provider can determine that the optional behavior is engaged.
				In ohter words, the need for self describing messages [<specref ref="self-describing"/>]should not be forgotten.
				An explicit, out of band mechanism might be necessary to enable a client to
				indicate that the optional behavior is engaged. (Such an out of band mechanism
				is outside the scope of the WS-Policy Framework).
				</p><p role="practice" id="bp-indicate-optional-assertion-use">
				<quote>Indicate use of  an Optional Assertion</quote>
				<quote>When a given behavior may be optional, it must be possible for both message participants 
				to determine that the assertion has been selected by both parties, 
				either out of band or as reflected by the message content.</quote>
				</p><p>
					The <bibref ref="WS-Policy-Primer"/> document contains an example that outlines the 
					use of 
					<bibref ref="MTOM"/> as an optional behavior that can be engaged by a consumer. 
					Related to this 
					behavior  is an assertion that identifies the use of MIME Multipart/Related 
					serialization [<bibref ref="MTOMPolicy"/>]. Policy-aware clients that recognize and engage this policy 
					assertion will use Optimized MIME Serialization for messages.
				</p><p>	
					The semantics of the MTOM assertion declare that the behavior must be reflected in 
					messages by requiring that they use an obvious wire format (MIME Multipart/Related 
					serialization). Thus, this optional behavior is self describing. For example, an 
					inbound message to a web service that requires MTOM must adhere to  Optimized MIME 
					Serialization. By examining the message, the provider can determine whether the policy
					alternate that contains the MTOM assertion is being obeyed (
						<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#bp-indicate-optional-assertion-use" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Best Practice: Indicate use of an Optional Assertion</loc>).
				</p><p>
					Note that if a MTOM assertion were only bound to the policy subject representing the
					inbound message, then it would not be clear to the service provider whether the outbound
					whether the outbound messages generated by that provider should 
					also utilize that behavior. Thus this assertion should be associated at the granularity
					of an entire message exchange.  The semantics of the assertion should specify this 
					to avoid inappropriate assumptions by implementations. 
				</p></div3></div2><div2 id="levels-of-abstraction"><head>Considerations for Policy Attachment</head><div3 id="general-attachment-guidelines"><head>General Guidelines</head><p>Although a policy assertion may be constrained to a specific set of policy subjects by Assertion Authors, 
						its semantics should not be dependent upon the mechanism by which the policy expression is attached to a 
						given policy subject. For instance, an assertion "Foo" has the same semantics when attached to an operation 
						policy subject regardless of whether it was attached using XML element policy attachment or the external URI 
						attachment mechanism. Independence from a specific attachment mechanism allows policy tools to choose the most 
						appropriate mechanism to attach a policy without having to analyze the contents of the policy.</p><p role="practice" id="bp-assertion-semantics">
						<quote>Semantics Independent of Attachment Mechanisms</quote>
						<quote>The semantics of a policy assertion should not depend on the attachment mechanism used.</quote>
							</p><p>For example, a security policy expression can be assigned a key reference and
					be attached to a UDDI binding or can be embedded in a WSDL document. </p><p>Since multiple attachment mechanisms may be used, a policy alternative created during the process of calculating 
						an effective policy can contain multiple instances of the same policy assertion type 
						( i.e., the SignedParts assertion). It is therefore also important for the policy authors to define what it 
						means if multiple assertions are present.
					</p><p role="practice" id="bp-semantics-multiple-same-type">
					<quote>Describe Semantics of Multiple Assertions of Same Type</quote><quote>
							Assertion Authors should specify the semantics of multiple instances
							of the same policy assertion type in the same policy alternative and the
							semantics of parameters and nested policy (if any) when there are 
							multiple instances of a policy assertion type in the same policy
							alternative regardless of the mechanism used to attach them to
							a policy subject.</quote> </p><p> Assertion authors should review sections 3.2 and 4.5 of the Policy Framework
					<bibref ref="WS-Policy"/> for more detail
					on the processing for multiple assertions of the same type.</p><p role="practice" id="bp-leverage-defined-attachment-mechanisms">
					<quote>Leverage Defined Attachment Mechanisms</quote><quote>
							Assertion Authors should leverage defined attachment models when
							possible to document the use of the policy assertions they author and ensure
							that there are no additional semantics implied by  the defined 
							attachment models for their assertions.</quote> </p><p role="practice" id="bp-use-defined-policy-subjects">
					<quote>Use Defined Policy Subjects</quote><quote> Assertion
							Assertion Authors should leverage defined policy subjects when possible to
							facilitate the deployment of their policy assertions. Common Policy
							subjects have been defined and used by other policy assertion authors
							and new policy assertions that leverage these existing subjects will be
							easier to define and group. </quote> </p><p role="practice" id="bp-identify-policy-subjects">
						<quote>Identify Policy Subjects</quote><quote>
						Policy assertion authors
						should unambiguously identify the appropriate policy subjects for their
						assertions. If the best practices are followed, and the assertions are
						scoped according to their subject, then multiple policy domains may be
						combined without conflict. Each domain should define any limitations at
						the policy subject level that might impact interoperability.</quote> </p><p>
					Assertion Authors should review the policy subjects defined in WS-PolicyAttachments
					and identify which of the existing policy subjects can be used with the assertions
					they define. That
					identification will facilitate the deployment of their policy assertions.
					</p><p> An example of this practice is
						the Reliable Messaging Policy Assertion document [<bibref ref="WS-RM-Policy"/>]. In the Sequence STR Assertion (section
						2.5.1) the Reliable Messaging Policy Assertion authors state that "The
						STR assertion defines the requirement that an RM Sequence MUST be bound
						to an explicit token that is referenced from a
						<code>wsse:SecurityTokenReference</code> in the CreateSequence message.
						This assertion MUST apply to [Endpoint Policy Subject]. This assertion
						MUST NOT be used for an endpoint that does not also use the RM
						assertion". This is illustrative of how the domain assertion author can
						specify additional constraints and assumptions for attachment and
						engagement of behavior in addition to the capabilities specified in
						Web Services Policy 1.5 - Attachment [<bibref ref="WS-PolicyAttachment"/>]. Such
						additional constraints must be clearly specified by the assertion
						authors. 
					</p></div3><div3 id="wsdl-attachment-guidelines"><head>Considerations for Policy Attachment in WSDL</head><p>A behavior identified by a policy assertion applies to the
        		associated policy subject. If a policy assertion is to be used
        		within WSDL, Assertion Authors should specify a WSDL
        		policy subject. 
        		</p><p>The specific WSDL policy subject is determined with respect to 
				a behavior as follows:</p><ulist><item><p>If the behavior applies to any message exchange
          				using any of the endpoints offered by a service then the
         				subject is the service policy subject. </p></item><item><p>If the behavior applies to any message exchange
          				made using an endpoint then the subject is the endpoint policy subject. </p></item><item><p>If the behavior applies to any message exchange
	  					defined by an operation then the subject is the operation policy subject. </p></item><item><p>If the behavior applies to an input message then
	  					the subject is the message policy subject - similarly for output and fault message WSDL policy subjects.</p></item></ulist><p role="practice" id="bp-WSDL-policy-subject">
					<quote>Specify WSDL Policy Subject(s)</quote>
					<quote>Assertion Authors should specify the set of
						relevant WSDL policy subjects with which the assertion may be associated.
					</quote>
				</p><p>Assertion Authors that utilize WSDL policy subjects need to 
				understand how the assertions will be
				processed in intersection and merging, and the specific implications of
				the processing for a specific attachment point and policy subject. 
				This topic is considered in detail in <bibref ref="WS-Policy-Primer"/>
				</p><p> For a given WSDL policy subject, there may be several
        		attachment points. For example, there are three attachment
        		points for the endpoint policy subject: the port, binding and
        		portType element. Assertion Authors should identify the
        		relevant attachment point when defining a new assertion. 
        		</p><p role="practice" id="bp-WSDL-consider-scope">
					<quote>Consider Scope of Attachment Points</quote>
					<quote>To determine the relevant attachment points, Assertion Authors should
        		consider the scope of the attachment point.
					</quote>
				</p><p>
        		For example, an assertion should only be allowed in the portType element if
        		the assertion reasonably applies to any endpoint that ever
        		references that portType. Most of the known policy assertions
        		are designed for the endpoint, operation or message policy subject. 
        		</p><p> In using WSDL attachment, it should be noted that the
        		service policy subject is a collection of endpoint policy
        		subjects. The endpoint policy subject is a collection of
        		operation WSDL policy subjects and so on. As a result, the WSDL
        		policy subjects compose naturally. It is quite tempting to
        		associate the identified behavior to a broader policy subject
        		than to a fine granular policy subject. For instance, it is
        		convenient to attach a supporting token assertion (defined by
        		the Web Services Security Policy specification) to an endpoint
        		policy subject instead of a message policy subject. The best practice
        		is to choose the most granular WSDL policy subject to which the behavior
        		represented by a policy assertion applies. 
        		</p><p role="practice" id="bp-WSDL-policy-subject-Granularity">
					<quote>Choose the Most Granular WSDL Policy Subject</quote>
					<quote>Assertion Authors should choose the most granular WSDL policy subject
						to which the behavior represented by a policy assertion applies.
					</quote>
				</p><p>
        		For authoring convenience, Assertion Authors may allow the
        		association of an assertion to multiple WSDL policy subjects within the same context of 
        		use (e.g in the same WSDL description). If an assertion is allowed to be 
        		associated with multiple WSDL policy subjects as is possible with WSDL, then 
        		the Assertion Authors have the burden to describe the rules 
        		when multiple instances of the same assertion are attached to different 
        		WSDL policy subjects in order to avoid non-interoperable behavior.
        		</p><p role="practice" id="bp-WSDL-multiple-policy-subjects">
						<quote> Define Rules for Attachment of an Assertion 
							type to Multiple WSDL policy subjects</quote>
						<quote>If an assertion is allowed to be associated with multiple WSDL policy subjects, 
							the assertion author should describe the rules for multiple 
							instances of the same assertion attached to multiple WSDL policy subjects in 
							the same context. 
						</quote>
					</p><p>
						To give one example, section 2.3 of the 
						Web Services Reliable Messaging Policy Assertion specification
						[<bibref ref="WS-RM-Policy"/>] gives rules on which WSDL policy subjects may be associated with the RM 
						Policy assertion, and which WSDL 1.1 elements may have RM Policy assertions attached.
					</p><p>If the behavior indicated by an assertion varies when attached to different policy subjects the Assertion Authors 
						should consider the following:</p><ulist><item><p> Decompose the semantics with several assertions.</p></item><item><p> Rewrite a single assertion targeting a specific policy subject. </p></item></ulist><p>Since many attachment points are available in WSDL, it would be
				necessary for Assertion Authors to recommend a preferred attachment 
				point. One approach would be to identify different attachment points in
				a policy subject, choose the most granular policy subject that the 
				behavior applies to and specify that as a preferred attachment point. 
				However, this approach only works if the policy subject is a true WSDL
				construct other than some other protocol concept that is
				layered over WSDL message exchanges. For example, as described previously
				the WS-RM Policy is a capability that governs a target endpoint's
				capability to accept message sequences that are beyond single message
				exchange. Therefore, its semantics encompass the cases when
				message level WSDL policy subjects may be used as attachment but
				also considers the case when sequences are present. In addition, 
				when the policy assertions do not target wire-level behaviors but
				rather abstract requirements, this technique does not apply. 
				</p><p role="practice" id="bp-WSDL-preferred-attachment-point">
					<quote>Specify Preferred WSDL Attachment Point</quote>
					<quote>If an assertion can be attached at multiple attachment points 
					    within a policy subject, Assertion Authors should specify a 
					    preferred attachment point for the chosen policy subject.
					</quote>
				</p><p>Assertion Authors that utilize WSDL policy subjects need to 
				understand how the assertions will be processed in merging and 
				the specific implications of a result where multiple assertions of 
				the assertion type are in an alternative, in the merged policy. For example, 
				consider the SignedParts assertion defined in WS-SecurityPolicy 1.2.
				The definition of SignedParts assertion explicitly permits multiple 
				SignedParts assertions to be present within a policy alternative, 
				and declares it to be equivalent to a single SignedParts assertion 
				containing the union of all specified message parts. So, if a SignedParts 
				assertion is specified in a WSDL binding at the input message level
				and subsequently an additional SignedParts assertion is specified 
				at the WSDL endpoint policy subject level, then the effective policy 
				at the endpoint could have more than one SignedParts assertion in the
				same alternative. However, the clear semantics defined by the SignedParts 
				assertion enable processing of the multiple occurrences properly.	
			   </p></div3><div3 id="UDDI-attachment-guidelines"><head>Considerations for Policy Attachment in UDDI</head><p>In general, UDDI protocol messages can be used to save TModel, businessEntity, 
				businessService and bindingTemplate definitions with policies attached. These
				definitions can also be the target of a "find" protocol message, thus allowing
				authors to store and retrieve policy assertions. There are two ways to associate
				policy expressions with UDDI definitions: direct referece, and registering policy 
				as a UDDI TModel. Assertion Authors defining new assertions should consider each 
				approach.
        		</p><p role="practice" id="bp-UDDI-tmodels">
					<quote>Use defined tModels when appropriate</quote>
					<quote>UDDI defines the following policy subjects: Service Provider Policy,
					Service Policy subject and Endpoint Policy subject.
					</quote>
				</p><p>
					When defining assertions and recommending a service provider policy
					subject [uddi:BusinessEntity], or a service policy subject [uddi:buisnessService],
					assertion authors are scoping the behaviors to the service 
					provider as a whole. When defining assertions and recommending an endpoint
					policy subject [uddi:bindingTemplate, uddi:tModel], assertion authors
					are scoping behaviors to a deployed endpoint.
				</p></div3></div2><div2 id="interrelated-domains"><head>Interrelated domains</head><p>Assertion Authors need to be clear about how assertions defined in  
				their domain may fit with assertions for interrelated domains. Assertion Authors should not duplicate existing  
				assertions and should also make sure that when adding assertions those new assertions are consistent  
				with pre-existing assertions of any  
				interrelated domain. </p><p role="practice" id="bp-specify-composition">
				<quote>Specify Composition with Related Assertions</quote>
				<quote>Assertion authors should clearly specify how an assertion 
				may compose with other related assertions, if any.</quote>
			</p><p> A  
				classic example of such an interrelated domain is security, because  
				security tends to
				cut across all aspects of a solution. 
				Web Services Reliable Messaging Policy
				Assertions [<bibref ref="WS-RM-Policy"/>] defines   
				 additional assertions
				 related to [<bibref ref="WS-SecurityPolicy"/>], an interrelated security domain.  One such additional assertion
			specifies the use of transport security to protect a message sequence, for example.</p><example><head>Reliable Message Sequence Security</head><eg xml:space="preserve">&lt;wsrmp:SequenceTransportSecurity [wsp:Optional="true"]? ... /&gt;</eg></example><p>The Reliable Message Policy specification states
				<quote>This assertion is effectively meaningless unless it occurs in conjunction with the 
					<code>RMAssertion</code> and a <code>sp:TransportBinding</code> assertion that requires the use of some transport-level
					security mechanism (e.g. <code>sp:HttpsToken</code>)</quote>.
				</p></div2></div1><div1 id="versioning-policy-assertions"><head>Versioning Policy Assertions</head><p>Assertion Authors need to consider not just the expression of the current set of requirements but
		how they anticipate new assertions being added to the set.  There are three aspects to versioning policy assertions:</p><ulist><item><p> Assertion Extensibility.  Assertion authors should allow for extensibility
					(see best practice 5. Start with a Simple Assertion) 
				</p></item><item><p> Policy Language Extensibility </p><p>Over time, the Policy WG or third parties can version or extend the Policy Language with new 
				or modified constructs.  These constructs may be compatible or incompatible with previous versions.
				</p><p> Assertion Authors should review the WS-Policy Primer <bibref ref="WS-Policy-Primer"/> 
				and the specifications <bibref ref="WS-Policy"/> <bibref ref="WS-PolicyAttachment"/>
				for details on extensibility.
				</p><p> The current WS-Policy language <bibref ref="WS-Policy"/> provides extensibility points 
				on 6 elements with a combination of attribute and/or element extensibility:</p><olist><item><p>Policy: element from ##other namespace and any attribute</p></item><item><p>ExactlyOne, All: element from ##other namespace; no attribute extensibility</p></item><item><p>PolicyReference: any element and any attribute</p></item><item><p>PolicyAttachment: element from ##other namespace and any attribute</p></item><item><p>AppliesTo: any element and any attribute</p></item><item><p>URI: any attribute</p></item></olist></item><item><p>Supporting New Policy Subjects (see Section
					<specref ref="supporting-new-policy-subjects"/>).</p></item></ulist><div2 id="Referencing_Policy_Expressions"><head>Referencing Policy Expressions</head><p>The <bibref ref="WS-Policy-Primer"/> illustrates how providers can utilize
					the identification mechanism defined in the Policy specification to
					expose a complex policy expression as a reusable building block for
					other policy expressions by reference. Reuse may also be useful for
					domain Assertion Authors, especially those defining complex assertions
					utilizing references to policy expressions by nesting. Statically
					available parameterized content may also be reused by different
					assertions. However, such referencing mechanism is outside the scope of
					WS-Policy naming and referencing framework and other mechanisms could be used. 
					As an example, in <bibref ref="WS-Policy-Primer"/>
					Section 4.2, the <code>sp:issuedToken</code> assertion utilizes the
					<code>sp:RequestSecurityTokenTemplate</code> parameter that contains necessary
					information to request a security token. The contents of the parameter are static and may be reused
					in different security scenarios using other referencing mechanisms (these are
					outside the scope of the WS-Policy Framework).</p></div2><div2 id="extending-assertions"><head> Evolution of Assertions (Versioning and Compatibility)</head><p>Over time, there may be multiple equivalent behaviors emerging in the Web
           			Service interaction space. Examples of such multiple equivalent behaviors are WSS: SOAP Message Security 1.0
           			vs. 1.1 and WS-Addressing August 2004 version vs. WS-Addressing W3C Recommendation
           			[<bibref ref="WS-Addressing"/>]. These equivalent behaviors
           			are mutually exclusive for an interaction. Such equivalent
           			behaviors can be modeled as independent assertions. </p><p role="practice" id="bp-independent-assertions">
           				<quote>Independent Assertions for Different Versions of a
           					Behavior</quote>
           			<quote>Assertion Authors should use independent assertions for modeling different 
           			versions of a behavior.</quote></p><p>The
           			policy expression in the example below requires the use of
           			WSS: SOAP Message Security 1.0. </p><example><head>Message-level Security and WSS: SOAP Message Security 1.0</head><eg xml:space="preserve">&lt;Policy&gt;
  &lt;sp:Wss10&gt;…&lt;/sp:Wss10&gt;
&lt;/Policy&gt;</eg></example><p>The policy expression in the example below requires the use of WSS: SOAP Message
           						Security 1.1. These are multiple equivalent behaviors and are represented using distinct
           						policy assertions.</p><example><head>Message-level Security and WSS: SOAP Message Security 1.1</head><eg xml:space="preserve">&lt;Policy&gt;
  &lt;sp:Wss11&gt;…&lt;/sp:Wss11&gt;
&lt;/Policy&gt;</eg></example></div2><div2 id="supporting-new-policy-subjects"><head>Supporting New Policy Subjects</head><p>
				The best practice <specref ref="bp-WSDL-policy-subject"/> specifies that policy authors should 
				define the set of policy subjects to which policy assertions can be 
				attached.  Over time, new policy subjects may need to be defined.  When 
				this occurs, policy Assertion Authors may update the list of policy 
				subjects supported by an assertion. 
			</p><p>
				When the assertion's semantics do not change to invalidate any of the 
				original policy subjects but new policy subjects need to be added, it may 
				be possible to use the same assertion to designate the additional policy 
				subjects without a namespace change.  For example, a policy assertion for 
				a protocol that is originally designed for endpoint policy subject may add 
				message policy subject to indicate finer granularity in the attachment 
				provided that endpoint policy subject is also retained in its design. When 
				new policy subjects are added it is incumbent on the authors to retain the 
				semantic of the policy assertion. 
			</p><p role="practice" id="bp-policy-subject-change"><quote>Document changes to policy 
			subject</quote><quote>If the policy subjects change over time, 
				the assertion description should also be versioned to reflect this 
				change.</quote>
			</p></div2></div1></body><back><div1 id="security-considerations"><head>Security Considerations</head><p> Security considerations are discussed in the <bibref ref="WS-Policy"/> document.</p></div1><div1 id="xml-namespaces"><head>XML Namespaces</head><p>The table below lists XML Namespaces that are used in this document. The choice of any
        namespace prefix is arbitrary and not semantically significant.</p><table summary="Prefixes and XML Namespaces used in this specification" id="nsprefix" border="1" cellspacing="0" cellpadding="5"><caption>Prefixes and XML Namespaces used in this specification.</caption><thead><tr><th rowspan="1" colspan="1">Prefix</th><th rowspan="1" colspan="1">XML Namespace</th><th rowspan="1" colspan="1">Specifications</th></tr></thead><tbody><tr><td rowspan="1" colspan="1">
							<code>soap</code>
						</td><td rowspan="1" colspan="1">
							<code>http://www.w3.org/2003/05/soap-envelope</code>
						</td><td rowspan="1" colspan="1">[<bibref ref="SOAP12"/>]</td></tr><tr><td rowspan="1" colspan="1">
							<code>sp</code>
						</td><td rowspan="1" colspan="1">
							<code>http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702</code>
						</td><td rowspan="1" colspan="1">[<bibref ref="WS-SecurityPolicy"/>]</td></tr><tr><td rowspan="1" colspan="1">
							<code>wsa</code>
						</td><td rowspan="1" colspan="1">
							<code>http://www.w3.org/2005/08/addressing</code>
						</td><td rowspan="1" colspan="1">[<bibref ref="WS-Addressing"/>]</td></tr><tr><td rowspan="1" colspan="1">
							<code>wsam</code>
						</td><td rowspan="1" colspan="1">
							<code>http://www.w3.org/2007/05/addressing/metadata</code>
						</td><td rowspan="1" colspan="1">[<bibref ref="WS-AddressingMetadata"/>]</td></tr><tr><td rowspan="1" colspan="1">
							<code>wsdl</code>
						</td><td rowspan="1" colspan="1">
							<code>http://schemas.xmlsoap.org/wsdl/</code>
						</td><td rowspan="1" colspan="1">[<bibref ref="WSDL11"/>]</td></tr><tr><td rowspan="1" colspan="1">
							<code>wsp</code>
						</td><td rowspan="1" colspan="1">
							<code>http://www.w3.org/ns/ws-policy</code>
						</td><td rowspan="1" colspan="1">[<bibref ref="WS-Policy"/>, <bibref ref="WS-PolicyAttachment"/>]</td></tr><tr><td rowspan="1" colspan="1">
							<code>wsrmp</code>
						</td><td rowspan="1" colspan="1">
							<code>http://docs.oasis-open.org/ws-rx/wsrmp/200702</code>
						</td><td rowspan="1" colspan="1">[<bibref ref="WS-RM-Policy"/>]</td></tr><tr><td rowspan="1" colspan="1">
							<code>wss</code>
						</td><td rowspan="1" colspan="1">
							<code>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd</code>
						</td><td rowspan="1" colspan="1">[<bibref ref="WS-Security2004"/>]</td></tr><tr><td rowspan="1" colspan="1">
							<code>wsu</code>
						</td><td rowspan="1" colspan="1">
							<code>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd</code>
						</td><td rowspan="1" colspan="1">[<bibref ref="WS-Security2004"/>]</td></tr></tbody></table></div1><div1 id="references"><head>References</head><blist><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="MTOM" id="MTOM" href="http://www.w3.org/TR/2005/REC-soap12-mtom-20050125/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">SOAP Message Transmission Optimization Mechanism</titleref>, M. Gudgin, N.
          Mendelsohn, M. Nottingham and H. Ruellan, Editors. World Wide Web Consortium, 25 January
          2005. This version of the SOAP Message Transmission Optimization Mechanism Recommendation
          is http://www.w3.org/TR/2005/REC-soap12-mtom-20050125/. The <loc href="http://www.w3.org/TR/soap12-mtom/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of SOAP Message Transmission
            Optimization Mechanism</loc> is available at http://www.w3.org/TR/soap12-mtom/. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="MTOMPolicy" id="MTOMPolicy" href="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization/optimizedmimeserialization-policy.pdf" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">MTOM Serialization Policy Assertion (WS-MTOMPolicy)</titleref>, 
					C Ferris, K Gavrylyuk, J Marsh , J Schlimmer, Authors. September 2006. Version 1.0 at 
					http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization/optimizedmimeserialization-policy.pdf.
			
				</bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="SOAP11" key="SOAP 1.1" href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Simple Object Access Protocol (SOAP) 1.1</titleref>, D. Box, et al, Editors.
          World Wide Web Consortium, 8 May 2000. Available at
          http://www.w3.org/TR/2000/NOTE-SOAP-20000508/. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="SOAP12" key="SOAP 1.2 Messaging Framework (Second Edition)" href="http://www.w3.org/TR/2007/REC-soap12-part1-20070427/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">SOAP Version 1.2 Part 1: Messaging Framework (Second Edition)</titleref>, M. Gudgin, M. Hadley,
					N. Mendelsohn, J-J. Moreau, H. Frystyk Nielsen, A. Karmarkar, and Y. Lafon, Editors.
					World Wide Web Consortium, 27 April 2007.
					This version of the SOAP Version 1.2 Part 1: Messaging Framework Recommendation
					is http://www.w3.org/TR/2007/REC-soap12-part1-20070427/. The <loc href="http://www.w3.org/TR/soap12-part1/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest 
						version of SOAP Version 
						1.2 Part 1: Messaging Framework</loc> is available at http://www.w3.org/TR/soap12-part1/.</bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="XOP" id="XOP" href="http://www.w3.org/TR/2005/REC-xop10-20050125/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML-binary Optimized Packaging</titleref>, M. Gudgin, N. Mendelsohn, M.
          Nottingham and H. Ruellan, Editors. World Wide Web Consortium, 25 January 2005. This
          version of the XML-binary Optimized Packaging Recommendation is
          http://www.w3.org/TR/2005/REC-xop10-20050125/. The <loc href="http://www.w3.org/TR/xop10/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML-binary Optimized Packaging</loc> is available at
          http://www.w3.org/TR/xop10/. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="WS-Addressing Core" id="WS-Addressing" href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Addressing 1.0 - Core</titleref>, M. Gudgin, M. Hadley, and T.
          Rogers, Editors. World Wide Web Consortium, 9 May 2006. This version of the Web Services
          Addressing 1.0 - Core Recommendation is
          http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/. The <loc href="http://www.w3.org/TR/ws-addr-core/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of Web Services Addressing 1.0
            - Core</loc> is available at http://www.w3.org/TR/ws-addr-core. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="WS-Addressing Metadata" id="WS-AddressingMetadata" href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
          <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Addressing 1.0 - Metadata</titleref>, M. Gudgin, M. Hadley, T.
          Rogers and Ü. Yalçinalp, Editors. World Wide Web Consortium, 4 September 2007. This version of Web Services Addressing 1.0 - Metadata W3C Recommendation is
				 	http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/. The <loc href="http://www.w3.org/TR/ws-addr-metadata" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of Web Services Addressing 1.0 -
            Metadata</loc> is available at http://www.w3.org/TR/ws-addr-metadata. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WSDL11" key="WSDL 1.1" href="http://www.w3.org/TR/2001/NOTE-wsdl-20010315" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Description Language (WSDL) 1.1</titleref>, E. Christensen, et al,
          Authors. World Wide Web Consortium, March 2001. Available at
          http://www.w3.org/TR/2001/NOTE-wsdl-20010315. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="WSDL 2.0 Core Language" id="WSDL20" href="http://www.w3.org/TR/2007/REC-wsdl20-20070626/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
          <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Description Language (WSDL) Version 2.0 Part 1: Core
          Language</titleref>, R. Chinnici, J. J. Moreau, A. Ryman, S. Weerawarana, Editors. World
          Wide Web Consortium, 26 June 2007. This version of the WSDL 2.0 specification is
          http://www.w3.org/TR/2007/REC-wsdl20-20070626/. The <loc href="http://www.w3.org/TR/wsdl20/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
         latest version of WSDL 2.0</loc> is available at http://www.w3.org/TR/wsdl20. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WS-Policy" key="Web Services Policy Framework" href="http://www.w3.org/TR/2007/REC-ws-policy-20070904/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
          <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Policy 1.5 - Framework</titleref>, A. S. Vedamuthu, D. Orchard, F. Hirsch, M. Hondo,  
          P. Yendluri, T. Boubez and Ü. Yalçinalp, Editors. World Wide Web Consortium, 4 September 2007. This version of the 
	 	Web Services Policy 1.5 - Framework specification is at http://www.w3.org/TR/2007/REC-ws-policy-20070904/. The <loc href="http://www.w3.org/TR/ws-policy/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
            Web Services Policy 1.5 - Framework</loc> is available at http://www.w3.org/TR/ws-policy/. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WS-PolicyAttachment" key="Web Services Policy Attachment" href="http://www.w3.org/TR/2007/REC-ws-policy-attach-20070904/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
          <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Policy 1.5 - Attachment</titleref>, A. S. Vedamuthu, D. Orchard, F. Hirsch, M. Hondo,  
          P. Yendluri, T. Boubez and Ü. Yalçinalp, Editors. World Wide Web Consortium, 4 September 2007. This version of the 
        	Web Services Policy 1.5 - Attachment specification is at http://www.w3.org/TR/2007/REC-ws-policy-attach-20070904/. The <loc href="http://www.w3.org/TR/ws-policy-attach/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
            Web Services Policy 1.5 - Attachment</loc> is available at
          http://www.w3.org/TR/ws-policy-attach/. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WS-Policy-Primer" key="Web Services Policy Primer" href="http://www.w3.org/TR/2007/WD-ws-policy-primer-20070810/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Policy 1.5 - Primer</titleref>, A. S. Vedamuthu, D. Orchard, F. Hirsch, M. Hondo,  
					P. Yendluri, T. Boubez and Ü. Yalçinalp, Editors. World Wide Web Consortium, 10 August 2007. This version of Web Services Policy 1.5 - Primer specification is http://www.w3.org/TR/2007/WD-ws-policy-primer-20070810/. The <loc href="http://www.w3.org/TR/ws-policy-primer/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of Web Services Policy 1.5 - Primer</loc> is available at http://www.w3.org/TR/ws-policy-primer/.</bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WS-RM" key="Web Services Reliable Messaging" href="http://docs.oasis-open.org/ws-rx/wsrm/200702/wsrm-1.1-spec-os-01.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Reliable Messaging (WS-ReliableMessaging)</titleref>, D. Davis, A. Karmarkar
					G. Pilz, S. Winkler, Ü. Yalçinalp, Editors. Organization for the Advancement of
					Structured Information Standards, 14 June 2007, available at:
					http://docs.oasis-open.org/ws-rx/wsrm/200702/wsrm-1.1-spec-os-01.html. 
					Namespace document is available at 
					<loc href="http://docs.oasis-open.org/ws-rx/wsrm/200702" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://docs.oasis-open.org/ws-rx/wsrm/200702</loc>. 
				</bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WS-RM-Policy" key="Web Services Reliable Messaging Policy Assertion" href="http://docs.oasis-open.org/ws-rx/wsrmp/200702/wsrmp-1.1-spec-os-01.pdf" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Reliable Messaging Policy Assertion 
						(WS-RM Policy) Version 1.1</titleref>, D. Davis, A. Kamarkar, G. Pilz, and
					Ü. Yalçinalp, Editors. 
					Organization for the Advancement of Structured Information Standards, 
					OASIS Standard, 14 June 2007. This version available at 
					http://docs.oasis-open.org/ws-rx/wsrmp/200702/wsrmp-1.1-spec-os-01.pdf.
					Namespace document is available at <loc href="http://docs.oasis-open.org/ws-rx/wsrmp/200702" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://docs.oasis-open.org/ws-rx/wsrmp/200702</loc>.
				</bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WS-Security2004" key="WS-Security 2004" href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Security: SOAP Message Security
          1.0</titleref>, A. Nadalin, C.  Kaler, P. Hallam-Baker and
          R. Monzillo, Editors. Organization for the Advancement of
          Structured Information Standards, March 2004. Available at
          http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WS-SecurityPolicy" key="WS-SecurityPolicy" href="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.pdf" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
		<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">WS-SecurityPolicy v1.2</titleref>, A. Nadalin, M. Goodner, M. Gudgin, A.
		Barbir, and H. Granqvist, Editors. Organization for the Advancement of
		Structured Information Standards, 1 July 2007. Available at
		http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.pdf. 
		Namespace document available at 
		http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WS-Trust" key="WS-Trust" href="http://docs.oasis-open.org/ws-sx/ws-trust/200512/ws-trust-1.3-os.pdf" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Atomic Transaction (WS-AtomicTransaction) Version 1.1</titleref>, M. Little, A. Wilkinson, 
					Editors.  Organization for the Advancement of Structured Information Standards, OASIS Standard, 
					16 April 2007. This version available at 
					http://docs.oasis-open.org/ws-tx/wstx-wsat-1.1-spec-os/wstx-wsat-1.1-spec-os.html. 
					Namespace document is available at <loc href="http://docs.oasis-open.org/ws-tx/wsat/2006/06" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://docs.oasis-open.org/ws-tx/wsat/2006/06</loc>.
				</bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="UDDIAPI20" key="UDDI API 2.0" href="http://uddi.org/pubs/ProgrammersAPI-V2.04-Published-20020719.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">UDDI Version 2.04 API</titleref>, T. Bellwood,
	Editor.  Organization for the Advancement of Structured
	Information Standards, 19 July 2002. This version of UDDI
	Version 2.0 API is
	http://uddi.org/pubs/ProgrammersAPI-V2.04-Published-20020719.htm. The
	<loc href="http://uddi.org/pubs/ProgrammersAPI_v2.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest
	version of the UDDI 2.0 API</loc> is available at
	http://uddi.org/pubs/ProgrammersAPI_v2.htm.
      </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="UDDIDataStructure20" key="UDDI Data Structure 2.0" href="http://uddi.org/pubs/DataStructure-V2.03-Published-20020719.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">UDDI Version 2.03 Data Structure
	Reference</titleref>, C. von Riegen, Editor. Organization for
	the Advancement of Structured Information Standards, 19 July
	2002. This version of UDDI Version 2.0 Data Structures is
	http://uddi.org/pubs/DataStructure-V2.03-Published-20020719.htm. The
	<loc href="http://uddi.org/pubs/DataStructure_v2.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest
	version of the UDDI 2.0 Data Structures</loc> is available at
	http://uddi.org/pubs/DataStructure_v2.htm.
      </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="UDDI30" key="UDDI 3.0" href="http://uddi.org/pubs/uddi-v3.0.2-20041019.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
			<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">UDDI Version 3.0.2</titleref>, L. Clément, A. Hately, C. von Riegen, and T. Rogers, Editors.
			Organization for the Advancement of Structured Information Standards, 19 October 2004. This version of the
			UDDI Version 3.0 is http://uddi.org/pubs/uddi-v3.0.2-20041019.htm.
			The <loc href="http://uddi.org/pubs/uddi_v3.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
				the UDDI 3.0</loc> specification is available at
			http://uddi.org/pubs/uddi_v3.htm.
		</bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="SAWSDL" key="SAWSDL" href="http://www.w3.org/TR/sawsdl/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
          <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Semantic Annotations for WSDL and XML Schema</titleref> Joel Farrell, Holger Lausen, Editors. World Wide Web Consortium, 28 Augusty 2007. This is a W3C recommendation and the
        	specification can be found at http://www.w3.org/TR/2007/REC-sawsdl-20070828/. The <loc href="http://www.w3.org/TR/sawsdl/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> latest version of Semantic Annotations for WSDL and XML Schema</loc> is available at
          http://www.w3.org/TR/sawsdl/.</bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="XML Schema Datatypes" id="XMLSchemaPart2" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Schema Part 2: Datatypes Second
						Edition</titleref>, P. Byron and A. Malhotra, Editors. World
					Wide Web Consortium, 2 May 2001, revised 28 October 2004. This
					version of the XML Schema Part 2 Recommendation is
					http://www.w3.org/TR/2004/REC-xmlschema-2-20041028. The <loc href="http://www.w3.org/TR/xmlschema-2/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML
						Schema Part 2</loc> is available at
					http://www.w3.org/TR/xmlschema-2.
				</bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XMLSchemaPart1" key="XML Schema Structures" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
					<titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Schema Part 1: Structures Second
						Edition</titleref>, H. Thompson, D. Beech, M. Maloney, and
					N. Mendelsohn, Editors. World Wide Web Consortium, 2 May 2001,
					revised 28 October 2004. This version of the XML Schema Part 1
					Recommendation is
					http://www.w3.org/TR/2004/REC-xmlschema-1-20041028. The <loc href="http://www.w3.org/TR/xmlschema-1/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML
						Schema Part 1</loc> is available at
					http://www.w3.org/TR/xmlschema-1.
				</bibl></blist></div1><inform-div1 id="acknowledgments"><head>Acknowledgements</head><p>This document is the work of the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2002/ws/policy/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C Web Services Policy
  Working Group</loc>.</p><p>
    Members of the Working Group are (at the time of writing, and by
    alphabetical order):
      Dimitar Angelov  (SAP AG), Abbie Barbir  (Nortel Networks), Charlton Barreto  (Adobe Systems Inc.), Sergey Beryozkin  (IONA Technologies, Inc.), Vladislav Bezrukov  (SAP AG), Toufic Boubez  (Layer 7 Technologies), Symon Chang  (BEA Systems, Inc.), Paul Cotton  (Microsoft Corporation), Doug Davis  (IBM Corporation), Jacques Durand  (Fujitsu Limited), Ruchith Fernando  (WSO2), Christopher Ferris  (IBM Corporation), William Henry  (IONA Technologies, Inc.), Frederick Hirsch  (Nokia), Maryann Hondo  (IBM Corporation), Ondrej Hrebicek  (Microsoft Corporation), Steve Jones  (Layer 7 Technologies), Tom Jordahl  (Adobe Systems Inc.), Paul Knight  (Nortel Networks), Philippe Le Hégaret  (W3C/MIT), Mark Little  (JBoss Inc.), Mohammad Makarechian  (Microsoft Corporation), Ashok Malhotra  (Oracle Corporation), Jonathan Marsh  (WSO2), Arnaud Meyniel  (Axway Software), Jeff Mischkinsky  (Oracle Corporation), Dale Moberg  (Axway Software), Anthony Nadalin  (IBM Corporation), David Orchard  (BEA Systems, Inc.), Sanjay Patil  (SAP AG), Manjula Peiris  (WSO2), Fabian Ritzmann  (Sun Microsystems, Inc.), Daniel Roth  (Microsoft Corporation), Tom Rutt  (Fujitsu Limited), Sanka Samaranayake  (WSO2), Felix Sasaki  (W3C/Keio), Yakov Sverdlov  (CA), Asir Vedamuthu  (Microsoft Corporation), Sanjiva Weerawarana  (WSO2), Ümit Yalçinalp  (SAP AG), Prasad Yendluri  (webMethods, Inc.).
  </p><p>
    Previous members of the Working Group were:
      Jeffrey Crump, Glen Daniels, Jong Lee, Monica Martin, Bob Natale, Eugene Osovetsky, Bijan Parsia, Skip Snow, Seumas Soltysik, Mark Temple-Raston.
  </p><p>
    The people who have contributed to <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://lists.w3.org/Archives/Public/public-ws-policy/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">discussions
    on public-ws-policy@w3.org</loc> are also gratefully
    acknowledged.
  </p></inform-div1><inform-div1 id="change-description"><head>Changes in this Version of the Document</head><p>A list of major changes since the Working Draft dated 28 September, 2007 is below:</p><ulist><item><p>Clarified the target audience for this document (see <specref ref="introduction"/>).</p></item><item><p>Moved <specref ref="bp-assertion-semantics"/> from section <specref ref="assertion-target"/> 
				to section <specref ref="general-attachment-guidelines"/>.</p></item><item><p>Added a new section: <specref ref="order-of-behaviors"/>.</p></item><item><p>Dropped an incorrect ignorable example in section <specref ref="QName_and_XML_Information_Set_representation"/>.</p></item><item><p>Rewrote section: <specref ref="optional-policy-assertion"/>.</p></item><item><p>Updated <specref ref="references"/>.</p></item></ulist></inform-div1><inform-div1 id="change-log"><head>Web Services Policy 1.5 - Guidelines for Policy Assertion Authors Change Log</head><table id="ws-policy-primer-changelog-table" border="1"><tbody><tr><th rowspan="1" colspan="1">Date</th><th rowspan="1" colspan="1">Author</th><th rowspan="1" colspan="1">Description</th></tr><!-- template
          <tr>
          <td>200505</td>
          <td></td>
          <td></td>
          </tr>
        --><tr><td rowspan="1" colspan="1">20060829</td><td rowspan="1" colspan="1">UY</td><td rowspan="1" colspan="1">Created first draft based on agreed outline and content</td></tr><tr><td rowspan="1" colspan="1">20061013</td><td rowspan="1" colspan="1">UY</td><td rowspan="1" colspan="1">Editorial fixes (suggested by Frederick), fixed references, bibl items, fixed dangling pointers, created eds to do</td></tr><tr><td rowspan="1" colspan="1">20061018</td><td rowspan="1" colspan="1">MH</td><td rowspan="1" colspan="1">Editorial fixes for readability, added example for Encrypted parts</td></tr><tr><td rowspan="1" colspan="1">20061030</td><td rowspan="1" colspan="1">UY</td><td rowspan="1" colspan="1">Fixes for Paul Cotton's editorial comments (20061020)</td></tr><tr><td rowspan="1" colspan="1">20061031</td><td rowspan="1" colspan="1">UY</td><td rowspan="1" colspan="1">Fixes for Frederick's editorial comments (20061025)</td></tr><tr><td rowspan="1" colspan="1">20061031</td><td rowspan="1" colspan="1">UY</td><td rowspan="1" colspan="1">Optionality discussion feedback integration</td></tr><tr><td rowspan="1" colspan="1">20061115</td><td rowspan="1" colspan="1">MH</td><td rowspan="1" colspan="1">First attempt at restructuring to include primer content</td></tr><tr><td rowspan="1" colspan="1">20061120</td><td rowspan="1" colspan="1">MH</td><td rowspan="1" colspan="1">Restructure to address action items 64,77, which refer to bugzilla 3705 and F2F RESOLUTION 3792 </td></tr><tr><td rowspan="1" colspan="1">20061127</td><td rowspan="1" colspan="1">ASV</td><td rowspan="1" colspan="1">Updated the list of editors. Added 
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://lists.w3.org/Archives/Public/public-ws-policy-eds/2006Nov/0033.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Frederick</loc> and 
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://lists.w3.org/Archives/Public/public-ws-policy-eds/2006Nov/0054.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Umit</loc> to the list of editors.
							Editors' action <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/86" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">86</loc>.
						</td></tr><tr><td rowspan="1" colspan="1">20061128</td><td rowspan="1" colspan="1">MH</td><td rowspan="1" colspan="1">Replaced section in Lifecycle with pointer to the text in the primer: related to action 77 
						</td></tr><tr><td rowspan="1" colspan="1">20061129</td><td rowspan="1" colspan="1">FJH</td><td rowspan="1" colspan="1">Editorial revision (editorial actions 
					    <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/84" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">84</loc> and 
					    <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/90" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">90</loc>) - 
					    includes suggestions from Asir: 
					    <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://lists.w3.org/Archives/Public/public-ws-policy-eds/2006Nov/0129.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Part 1</loc> and 
					    <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://lists.w3.org/Archives/Public/public-ws-policy-eds/2006Nov/0134.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Part 2</loc>. 
						</td></tr><tr><td rowspan="1" colspan="1">20061129</td><td rowspan="1" colspan="1">ASV</td><td rowspan="1" colspan="1">Formatted examples in <specref ref="extending-assertions"/>. 
						</td></tr><tr><td rowspan="1" colspan="1">20061218</td><td rowspan="1" colspan="1">FS</td><td rowspan="1" colspan="1">Formatted examples in <specref ref="compact-full"/> and scenario section. 
						</td></tr><tr><td rowspan="1" colspan="1">20061219</td><td rowspan="1" colspan="1">TIB</td><td rowspan="1" colspan="1">Editorial revision: most parts of editorial action
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/96" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">96</loc>.
							Remaining editorials to be reviewed.
						</td></tr><tr><td rowspan="1" colspan="1">20061220</td><td rowspan="1" colspan="1">TIB</td><td rowspan="1" colspan="1">Editorial revision: completed missing parts of editorial action
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/96" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">96</loc>
							after editorial reviews by co-editors.
						</td></tr><tr><td rowspan="1" colspan="1">20061226</td><td rowspan="1" colspan="1">MH</td><td rowspan="1" colspan="1">Editorial revision: reconciled terms related to "Assertion Authors"
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/106" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">106</loc>
							and bug http://www.w3.org/Bugs/Public/show_bug.cgi?id=3983
						</td></tr><tr><td rowspan="1" colspan="1">20070104</td><td rowspan="1" colspan="1">UY</td><td rowspan="1" colspan="1">Resolution of Issue <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=3982" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">3982</loc>
                                                    Based on <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2006/12/06-ws-policy-irc#T18-55-00" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Minutes for resolution</loc>, Minor formatting for consistent use of the term "Assertion Author"
						</td></tr><tr><td rowspan="1" colspan="1">20070104</td><td rowspan="1" colspan="1">UY</td><td rowspan="1" colspan="1">Resolution of Issue <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=3980" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">3980</loc>
						</td></tr><tr><td rowspan="1" colspan="1">20070108</td><td rowspan="1" colspan="1">ASV</td><td rowspan="1" colspan="1">Reset Section <specref ref="change-description"/>.
						</td></tr><tr><td rowspan="1" colspan="1">20070122</td><td rowspan="1" colspan="1">PY</td><td rowspan="1" colspan="1">Completed action item:
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/127" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">127</loc>
							Resolution for issue <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=4197" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">4197</loc></td></tr><tr><td rowspan="1" colspan="1">20070130</td><td rowspan="1" colspan="1">UY</td><td rowspan="1" colspan="1">Completed action item:
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/144" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">144</loc>.
							Resolution for issues <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=3985" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">3985</loc> and <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=3986" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">3986</loc></td></tr><tr><td rowspan="1" colspan="1">20070130</td><td rowspan="1" colspan="1">UY</td><td rowspan="1" colspan="1">Completed action item:
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/137" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">137</loc>.
							Resolution for issue <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=4198" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">4198</loc></td></tr><tr><td rowspan="1" colspan="1">20070130</td><td rowspan="1" colspan="1">UY</td><td rowspan="1" colspan="1">Completed action item:
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/119" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">119</loc>.
							Resolution for issue <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=4141" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">4141</loc></td></tr><tr><td rowspan="1" colspan="1">20070130</td><td rowspan="1" colspan="1">UY</td><td rowspan="1" colspan="1">Completed action item:
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/126" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">126</loc>.
							Resolution for issue <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=4188" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">4188</loc></td></tr><tr><td rowspan="1" colspan="1">20070130</td><td rowspan="1" colspan="1">UY</td><td rowspan="1" colspan="1">Fixed SAWSDL ref name</td></tr><tr><td rowspan="1" colspan="1">20070131</td><td rowspan="1" colspan="1">FJH</td><td rowspan="1" colspan="1">Fixed numerous spelling and typo errors. Implement resolution for issue 
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=3953" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">3953</loc>
							as noted in message 
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://lists.w3.org/Archives/Public/public-ws-policy/2006Dec/0090.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">90</loc> and amended 
							as noted in message
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://lists.w3.org/Archives/Public/public-ws-policy/2007Jan/0217.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">217</loc>. 
							Changes correspond to editor's action
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/152" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">152</loc>.</td></tr><tr><td rowspan="1" colspan="1">20070221</td><td rowspan="1" colspan="1">MH</td><td rowspan="1" colspan="1"> Partial implementation for issue 
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=4072" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">4072</loc>
							in response to editor's action 
							<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/154" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">154 </loc>.
							NOTE ALSO- I needed to put back in the "prefix" entity defintion [line7] to get the build to work.
							</td></tr><tr><td rowspan="1" colspan="1">20070306</td><td rowspan="1" colspan="1">ASV</td><td rowspan="1" colspan="1"> Implemented partial 
						<loc xmlns:xlink="