Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS...

90
Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, 15 March 2, 5 January 2004 Document identifier: sstc-saml-core-2.0-draft-08 2 Location: http://www.oasis-open.org/committees/documents.php?wg_abbrev=security Editors : Scott Cantor, individual ( [email protected] ) John Kemp, Nokia ( [email protected] ) Eve Maler, Sun Microsystems ([email protected]) Contributors: Stephen Farrell, Baltimore Technologies Irving Reid, Baltimore Technologies Hal Lockhart, BEA Systems David Orchard, BEA Systems Krishna Sankar, Cisco Systems Carlisle Adams, Entrust Tim Moses, Entrust Nigel Edwards, Hewlett-Packard Joe Pato, Hewlett-Packard Bob Blakley, IBM Marlena Erdos, IBM Scott Cantor, individual RL “Bob” Morgan, individual Marc Chanliau, Netegrity Chris McLaren, Netegrity Prateek Mishra, Netegrity (co-chair) Charles Knouse, Oblix Simon Godik, Overxeer Rob Philpott, RSA Security (co-chair) Darren Platt, formerly of RSA Security Jahan Moreh, Sigaba Jeff Hodges, Sun Microsystems Phillip Hallam-Baker, VeriSign (former editor) sstc-saml-core-2.0-draft-08 15 March 2004 Copyright © OASIS Open 2004. All Rights Reserved Page 1 of 90 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 1 2

Transcript of Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS...

Page 1: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

Assertions and Protocols for the OASISSecurity Assertion Markup Language(SAML) V2.0Working Draft 08, 15 March2, 5 January 2004

Document identifier:sstc-saml-core-2.0-draft-082

Location:http://www.oasis-open.org/committees/documents.php?wg_abbrev=security

Editors:Scott Cantor, individual ([email protected])John Kemp, Nokia ([email protected])Eve Maler, Sun Microsystems ([email protected])

Contributors:Stephen Farrell, Baltimore TechnologiesIrving Reid, Baltimore TechnologiesHal Lockhart, BEA SystemsDavid Orchard, BEA SystemsKrishna Sankar, Cisco SystemsCarlisle Adams, EntrustTim Moses, EntrustNigel Edwards, Hewlett-PackardJoe Pato, Hewlett-PackardBob Blakley, IBMMarlena Erdos, IBMScott Cantor, individualRL “Bob” Morgan, individualMarc Chanliau, NetegrityChris McLaren, NetegrityPrateek Mishra, Netegrity (co-chair)Charles Knouse, OblixSimon Godik, OverxeerRob Philpott, RSA Security (co-chair)Darren Platt, formerly of RSA SecurityJahan Moreh, SigabaJeff Hodges, Sun MicrosystemsPhillip Hallam-Baker, VeriSign (former editor)

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 1 of 90

1

2

3

4

5

67

89

10111213

141516171819202122232425262728293031323334353637

12

Page 2: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

Abstract:This specification defines the syntax and semantics for XML-encoded assertions aboutauthentication, attributes and authorization, and for the protocols that conveys this information.

Status:This is a working draft produced by the Security Services Technical Committee. Publication ofthis draft does not imply TC endorsement. This is an active working draft that may be updated,replaced, or obsoleted at any time. See the Revision History for details of changes made inthis revision.Committee members should submit comments and potential errata to the [email protected] list. Others should submit them to the [email protected] list (to post, you must subscribe; to subscribe, send a messageto [email protected] with "subscribe" in the body) or useother OASIS-supported means of submitting comments. The committee will publish vetted errataon the Security Services TC web page (http://www.oasis-open.org/committees/security/).For information on whether any patents have been disclosed that may be essential toimplementing this specification, and any offers of patent licensing terms, please refer to theIntellectual Property Rights web page for the Security Services TC (http://www.oasis-open.org/committees/security/ipr.php).

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 2 of 90

383940

4142434445

464748495051

52535455

34

Page 3: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

Table of Contents

1 Introduction.................................................................................................................................................71.1 Notation...............................................................................................................................................71.2 Schema Organization and Namespaces.............................................................................................8

1.2.1 String and URI Values..................................................................................................................81.2.2 Time Values.................................................................................................................................81.2.3 ID and ID Reference Values........................................................................................................81.2.4 Comparing SAML Values.............................................................................................................9

2 SAML Assertions.......................................................................................................................................102.1 Schema Header and Namespace Declarations................................................................................102.2 Simple Types.....................................................................................................................................10

2.2.1 Simple Type DecisionType........................................................................................................112.3 Name Identifiers.................................................................................................................................11

2.3.1 Element <BaseIdentifier>...........................................................................................................112.3.2 Element <NameIdentifier>.........................................................................................................122.3.3 Element <EncryptedIdentifier>...................................................................................................122.3.4 Element <Issuer>.......................................................................................................................13

2.4 Assertions..........................................................................................................................................132.4.1 Element <AssertionIDReference>.............................................................................................132.4.2 Element <AssertionURIReference>...........................................................................................132.4.3 Element <Assertion>..................................................................................................................14

2.4.3.1 Element <Subject> .............................................................................................................152.4.3.2 Element <Conditions>........................................................................................................16

2.4.3.2.1 Attributes NotBefore and NotOnOrAfter ....................................................................172.4.3.2.2 Element <Condition>...................................................................................................172.4.3.2.3 Elements <AudienceRestrictionCondition> and <Audience>.....................................172.4.3.2.4 Element <DoNotCacheCondition>..............................................................................182.4.3.2.5 Element <ProxyRestrictionCondition>........................................................................18

2.4.3.3 Element <Advice>...............................................................................................................192.5 Statements.........................................................................................................................................20

2.5.1 Element <Statement> ................................................................................................................202.5.1.1 Elements <SubjectConfirmation>, <ConfirmationMethod>, and<SubjectConfirmationData>............................................................................................................20

2.5.2 Element <AuthenticationStatement>.........................................................................................212.5.2.1 Element <SubjectLocality>.................................................................................................222.5.2.2 Element <AuthnContext>....................................................................................................22

2.5.3 Element <AttributeStatement>...................................................................................................232.5.3.1 Elements <AttributeDesignator> and <Attribute>.............................................................. 23

2.5.3.1.1 Element <AttributeValue>...........................................................................................242.5.4 Element <AuthorizationDecisionStatement>.............................................................................25

2.5.4.1 Element <Action>................................................................................................................262.5.4.2 Element <Evidence>...........................................................................................................27

3 SAML Protocols........................................................................................................................................283.1 Schema Header and Namespace Declarations................................................................................283.2 Requests and Responses.................................................................................................................29

3.2.1 Complex Type RequestAbstractType........................................................................................293.2.1.1 Element <RelayState>........................................................................................................30

3.2.2 Complex Type StatusResponseType........................................................................................303.2.2.1 Element <Status>...............................................................................................................31

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 3 of 90

56

57

58

596061626364

65

666768697071727374757677787980818283848586878889909192939495969798

99

100101102103104

56

Page 4: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

3.2.2.2 Element <StatusCode>.......................................................................................................323.2.2.3 Element <StatusMessage>.................................................................................................343.2.2.4 Element <StatusDetail>......................................................................................................34

3.3 Assertion Query and Request Protocol.............................................................................................343.3.1 Element <AssertionIDRequest>.................................................................................................343.3.2 Queries.......................................................................................................................................35

3.3.2.1 Element <SubjectQuery>....................................................................................................353.3.2.2 Element <AuthenticationQuery>.........................................................................................353.3.2.3 Element <AttributeQuery>..................................................................................................363.3.2.4 Element <AuthorizationDecisionQuery>............................................................................37

3.3.3 Element <Response>.................................................................................................................383.3.3.1 Processing Rules................................................................................................................38

3.4 Authentication Request Protocol.......................................................................................................383.4.1 Element <AuthnRequest>..........................................................................................................39

3.4.1.1 Element <NameIDPolicy>...................................................................................................413.4.1.2 Element <RequestAuthnContext>......................................................................................423.4.1.3 Element <Scoping>.............................................................................................................433.4.1.4 Element <IDPList>..............................................................................................................433.4.1.5 Element <IDPEntry>...........................................................................................................443.4.1.6 Processing Rules................................................................................................................443.4.1.7 Proxying..............................................................................................................................45

3.4.1.7.1 Processing Rules........................................................................................................463.5 Artifact Protocol.................................................................................................................................47

3.5.1 Element <ArtifactRequest>........................................................................................................473.5.2 Element <ArtifactResponse>.....................................................................................................483.5.3 Processing Rules.......................................................................................................................48

3.6 Federated Name Registration Protocol.............................................................................................493.6.1 Element <RegisterNameIdentifierRequest>..............................................................................493.6.2 Element <RegisterNameIdentifierResponse>...........................................................................503.6.3 Processing Rules.......................................................................................................................50

3.7 Federation Termination Protocol.......................................................................................................513.7.1 Element <FederationTerminationNotification>..........................................................................513.7.2 Element <FederationTerminationResponse>............................................................................523.7.3 Processing Rules.......................................................................................................................52

3.8 Single Logout Protocol......................................................................................................................523.8.1 Element <LogoutRequest>........................................................................................................533.8.2 Element <LogoutResponse>......................................................................................................533.8.3 Processing Rules.......................................................................................................................54

3.8.3.1 Session Participant Rules..................................................................................................543.8.3.2 Session Authority Rules ....................................................................................................54

3.9 Name Identifier Mapping Protocol.....................................................................................................553.9.1 Element <NameIdentifierMappingRequest>..............................................................................553.9.2 Element <NameIdentifierMappingResponse>...........................................................................563.9.3 Processing Rules.......................................................................................................................57

4 SAML Versioning......................................................................................................................................584.1 SAML Specification Set Version.......................................................................................................58

4.1.1 Schema Version.........................................................................................................................584.1.2 SAML Assertion Version............................................................................................................584.1.3 SAML Protocol Version..............................................................................................................59

4.1.3.1 Request Version.................................................................................................................594.1.4 Response Version......................................................................................................................594.1.5 Permissible Version Combinations............................................................................................60

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 4 of 90

105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149

150151152153154155156

78

Page 5: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

4.2 SAML Namespace Version...............................................................................................................604.2.1 Schema Evolution......................................................................................................................60

5 SAML and XML Signature Syntax and Processing..................................................................................615.1 Signing Assertions.............................................................................................................................625.2 Request/Response Signing...............................................................................................................625.3 Signature Inheritance........................................................................................................................625.4 XML Signature Profile.......................................................................................................................62

5.4.1 Signing Formats and Algorithms................................................................................................625.4.2 References.................................................................................................................................625.4.3 Canonicalization Method...........................................................................................................635.4.4 Transforms.................................................................................................................................635.4.5 KeyInfo.......................................................................................................................................635.4.6 Binding Between Statements in a Multi-Statement Assertion...................................................635.4.8 Example......................................................................................................................................63

6 SAML Extensions......................................................................................................................................666.1 Assertion Schema Extension.............................................................................................................666.2 Protocol Schema Extension..............................................................................................................66

7 SAML-Defined Identifiers..........................................................................................................................687.1 Authentication Method Identifiers......................................................................................................68

7.1.1 Password....................................................................................................................................687.1.2 Kerberos ....................................................................................................................................687.1.3 Secure Remote Password (SRP)...............................................................................................687.1.4 Hardware Token.........................................................................................................................697.1.5 SSL/TLS Certificate Based Client Authentication:....................................................................697.1.6 X.509 Public Key .......................................................................................................................697.1.7 PGP Public Key .........................................................................................................................697.1.8 SPKI Public Key ........................................................................................................................697.1.9 XKMS Public Key ......................................................................................................................697.1.10 XML Digital Signature .............................................................................................................697.1.11 Authentication Context.............................................................................................................707.1.12 Unspecified .............................................................................................................................70

7.2 Action Namespace Identifiers............................................................................................................707.2.1 Read/Write/Execute/Delete/Control...........................................................................................707.2.2 Read/Write/Execute/Delete/Control with Negation...................................................................707.2.3 Get/Head/Put/Post.....................................................................................................................717.2.4 UNIX File Permissions...............................................................................................................71

7.3 NameIdentifier Format Identifiers......................................................................................................717.3.1 Unspecified.................................................................................................................................727.3.2 Email Address............................................................................................................................727.3.3 X.509 Subject Name..................................................................................................................727.3.4 Windows Domain Qualified Name.............................................................................................727.3.5 Provider Identifier.......................................................................................................................727.3.6 Federated Identifier....................................................................................................................727.3.7 Transient Identifier.....................................................................................................................73

7.4 Attribute NameFormat Identifiers......................................................................................................737.4.1 Unspecified.................................................................................................................................737.4.2 URI Reference............................................................................................................................73

7.5 Attribute ValueType Identifiers..........................................................................................................747.5.1 Application-Specific Value Type................................................................................................74

8 References................................................................................................................................................75

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 5 of 90

157158159

160

161

162

163164165166167168169170171

172

173

174

175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206

910

Page 6: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

8.1 Normative References.......................................................................................................................758.2 Non-Normative References...............................................................................................................75

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 6 of 90

207

208209

1112

Page 7: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

1 IntroductionThis specification defines the syntax and semantics for Security Assertion Markup Language (SAML)assertions and the protocols for requesting and returning them. SAML assertions, requests, andresponses are encoded in XML [XML]and use XML namespaces [XMLNS]. They are typically embeddedin other structures for transport, such as HTTP form POSTs and XML-encoded SOAP messages. TheSAML specification for bindingXML-encoded Security Assertion Markup Language (SAML) assertions,protocol requests, and protocol responses. These constructs are typically embedded in other structuresfor transport, such as HTTP form POSTs and XML-encoded SOAP messages. The SAML specificationfor bindings and profiles [SAMLBind] provides frameworks for this embedding and transport. Filescontaining just the SAML assertion schema [SAML-XSD] and protocol schema [SAMLP-XSD] areavailable.

The following sections describe how to understand the rest of this specification.

1.1 NotationThis specification uses schema documents conforming to W3C XML Schema and normative text todescribe the syntax and semantics of XML-encoded SAML assertions and protocol messages.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULDNOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this specification are to be interpreted asdescribed in IETF RFC 2119 [RFC 2119]:

…they MUST only be used where it is actually required for interoperation or to limit behaviorwhich has potential for causing harm (e.g., limiting retransmissions)…

These keywords are thus capitalized when used to unambiguously specify requirements over protocoland application features and behavior that affect the interoperability and security of implementations.When these words are not capitalized, they are meant in their natural-language sense.

Listings of SAML schemas appear like this.

Example code listings appear like this.In cases of disagreement between the SAML schema documents [SAML-XSD] [SAMLP-XSD] and thisspecification, the schema documentfiles [SAML-XSD] [SAMLP-XSD] and this specification, the schemafiles take precedence.

Conventional XML namespace prefixes are used throughout the listings in this specification to stand fortheir respective namespaces (see Section Schema Organization and Namespaces) as follows, whetheror not a namespace declaration is present in the example:

The prefix saml: stands for the SAML assertion namespace,urn:oasis:names:tc:SAML:2.0:assertion.

The prefix samlp: stands for the SAML request-response protocol namespace,urn:oasis:names:tc:SAML:2.0:protocol.

The prefix ds: stands for the W3C XML Signature namespace,http://www.w3.org/2000/09/xmldsig# [XMLSig-XSD].

The prefix xenc: stands for the W3C XML Encryption namespace,http://www.w3.org/2001/04/xmlenc# [XMLEnc-XSD].

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 7 of 90

210

211212213214215216217218219220

221

222

223224

225226227

228229

230231232

233234235

236237238

239240241

242243

244245

246247

248249

1314

Page 8: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

The prefix xsd: stands for the W3C XML Schema namespace,http://www.w3.org/2001/XMLSchema [Schema1], in example listings. In schema listings, thisis the default namespace and no prefix is shown.

This specification uses the following typographical conventions in text: <SAMLElement>,<ns:ForeignElement>, Attribute, Datatype, OtherCode.

1.2 Schema Organization and NamespacesThe SAML assertion structures are defined in a schema [SAML-XSD] associated with the following XMLnamespace:

urn:oasis:names:tc:SAML:2.0:assertionThe SAML request-response protocol structures are defined in a schema [SAMLP-XSD] associated withthe following XML namespace:

urn:oasis:names:tc:SAML:2.0:protocolThe assertion schema is imported into the protocol schema. Also imported into both schemas is theschema for XML Signature [XMLSig-XSD], which is associated with the following XML namespace:

http://www.w3.org/2000/09/xmldsig#See Section SAML Namespace Version for information on SAML namespace versioning.

1.2.1 String and URI ValuesAll SAML string and URI reference values have the types xsd:string and xsd:anyURI respectively,which are built in to the W3C XML Schema Datatypes specification [Schema2]. All strings in SAMLmessages MUST consist of at least one non-whitespace character (whitespace is defined in the XMLRecommendation [XML] §2.3). Empty and whitespace-only values are disallowed. Also, unless otherwiseindicated in this specification, all URI reference values MUST consist of at least one non-whitespacecharacter, and are REQUIRED to be absolute [RFC 2396].

1.2.2 Time ValuesAll SAML time values have the type xsd:dateTime, which is built in to the W3C XML Schema Datatypesspecification [Schema1], and MUST be expressed in UTC form.

SAML system entities SHOULD NOT rely on other applications supporting time resolution finer thanmilliseconds. Implementations MUST NOT generate time instants that specify leap seconds.

1.2.3 ID and ID Reference ValuesThe xsd:ID simple type is used to declare SAML identifiers for assertions, requests, and responses.Values declared to be of type xsd:ID in this specification MUST satisfy the following properties inaddition to those imposed by the definition of the xsd:ID type itself:

Any party that assigns an identifier MUST ensure that there is negligible probability that that party orany other party will accidentally assign the same identifier to a different data object.

Where a data object declares that it has a particular identifier, there MUST be exactly one suchdeclaration.

The mechanism by which a SAML system entity ensures that the identifier is unique is left to theimplementation. In the case that a pseudorandom technique is employed, the probability of two randomly

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 8 of 90

250251252

253254

255

256257

258

259260

261

262263

264

265

266

267268269270271272

273

274275

276277

278

279280281

282283

284285

286287

1516

Page 9: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

chosen identifiers being identical MUST be less than or equal to 2-128 and SHOULD be less than or equalto 2-160. This requirement MAY be met by encoding a randomly chosen value between 128 and 160 bits inlength. The encoding must conform to the rules defining the xsd:ID datatype.

The xsd:NCName simple type is used in SAML to reference identifiers of type xsd:ID. Note thatxsd:IDREF cannot be used for this purpose since, in SAML, the element referred to by a SAMLreference identifier might actually be defined in a document separate from that in which the identifierreference is used, which violates the xsd:IDREF requirement that its value. XML requires that names oftype xsd:IDREF must match the value of an ID attribute on some element in the same XML document.

1.2.4 Comparing SAML ValuesUnless otherwise noted, all elements in SAML documents that have the XML Schema xsd:string type, ora type derived from that, MUST be compared using an exact binary comparison. In particular, SAMLimplementations and deployments MUST NOT depend on case-insensitive string comparisons,normalization or trimming of white space, or conversion of locale-specific formats such as numbers orcurrency. This requirement is intended to conform to the W3C Requirements for String Identity,Matching, and String Indexing [W3C-CHAR].

If an implementation is comparing values that are represented using different character encodings, theimplementation MUST use a comparison method that returns the same result as converting both valuesto the Unicode character encoding, Normalization Form C [UNICODE-C], and then performing an exactbinary comparison. This requirement is intended to conform to the W3C Character Model for the WorldWide Web [W3C-CharMod], and in particular the rules for Unicode-normalized Text.

Applications that compare data received in SAML documents to data from external sources MUST takeinto account the normalization rules specified for XML. Text contained within elements is normalized sothat line endings are represented using linefeed characters (ASCII code 10Decimal), as described in theXML Recommendation [XML]§2.11. Attribute values defined as strings (or types derived from strings) arenormalized as described in §2.11. Attribute values defined as strings (or types derived from strings) arenormalized as described in [XML] §3.3.3. All white space characters are replaced with blanks (ASCIIcode 32Decimal).

The SAML specification does not define collation or sorting order for attribute or element values. SAMLimplementations MUST NOT depend on specific sorting orders for values, because these canmay differdepending on the locale settings of the hosts involved.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 9 of 90

288289290

291292293294295

296

297298299300301302

303304305306307

308309310311312313314

315316317

1718

Page 10: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

2 SAML AssertionsAn assertion is a package of information that supplies one or more statements made by a SAMLauthority. This SAML specification defines three different kinds of assertion statement that can becreated by a SAML authority. As mentioned above and described in Section SAML Extensions,extensions are permitted by the SAML assertion schema, allowing user-defined extensions to assertionsand statements, as well as allowing the definition of new kinds of assertion andSAML statements, as wellas allowing the definition of new kinds of assertion statement. The three kinds of statement defined inthis specification are:

Authentication: The specified subject was authenticated by a particular means at a particular time.

Attribute: The specified subject is associated with the supplied attributes.

Authorization Decision: A request to allow the specified subject to access the specified resourcehas been granted or denied.

The outer structure of an assertion is generic, providing information that is common to all of thestatements within it. Within an assertion, a series of inner elements describe the authentication, attribute,authorization decisionuthorization decision, attribute, or user-defined statements containing the specifics.

2.1 Schema Header and Namespace DeclarationsThe following schema fragment defines the XML namespaces and other header information for theassertion schema:

<schema targetNamespace="urn:oasis:names:tc:SAML:2.0:assertion" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"

xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"elementFormDefault="unqualified"attributeFormDefault="unqualified"

blockDefault="substitution"version="2.0"><import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-

schema.xsd"/> <import namespace="http://www.w3.org/2001/04/xmlenc#"schemaLocation="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd"/>

<annotation><documentation>

Document identifier: sstc-saml-schema-assertion-2.0 Location: http://www.oasis-open.org/committees/documents.php?wg_abbrev=security </documentation> Revision history: V2.0: Updated the schema and namespace to V2.0. Removed <AuthorityBinding> and corresponding type. </documentation>

</annotation>…</schema>

2.2 Simple TypesThe following section defines(s) define the SAML assertion-related simple types.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 10 of 90

318

319320321322323324325

326

327

328329

330331332

333

334335

336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365

366

367

1920

Page 11: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

2.2.1 Simple Type DecisionTypeThe DecisionType simple type defines the possible values to be reported as the status of anauthorization decision statement.

PermitThe specified action is permitted.

DenyThe specified action is denied.

IndeterminateThe SAML authority cannot determine whether the specified action is permitted or denied.

The Indeterminate decision value is used in situations where the SAML authority requires the abilityto provide an affirmative statement that it is not able to issue a decision. Additional information as to thereason for the refusal or inability to provide a decision MAY be returned is used in situations where theSAML authority requires the ability to provide an affirmative statement that it is not able to issue adecision. Additional information as to the reason for the refusal or inability to provide a decision MAY bereturned as <StatusDetail> elements.

The following schema fragment defines the DecisionType simple type:<simpleType name="DecisionType">

<restriction base="string"><enumeration value="Permit"/><enumeration value="Deny"/><enumeration value="Indeterminate"/>

</restriction></simpleType>

2.3 Name Identifiers The following sections define the SAML constructs that contain descriptive identifiers of subjects andassertion and message issuers.

2.3.1 Element <BaseIdentifier> The <BaseIdentifier> element is an extension point that allows applications to add new kinds ofidentifiers. Its BaseIdentifierAbstractType complex type is abstract and is thus usable only as the baseof a derived type. It defines the following common attributes for all identifier representations:

NameQualifier [Optional]The security or administrative domain that qualifies the identifier of the subject. This attributeprovides a means to federate identifiers from disparate user stores without collision.

SPNameQualifier [Optional]Further qualifies a federated identifier with the name of the service provider or affiliation ofproviders which has federated the principal's identity.

The following schema fragment defines the <BaseIdentifier> element and its BaseIdentifierTypecomplex type:

<element name="BaseIdentifier" type="saml:BaseIdentifierAbstractType"/><complexType name="BaseIdentifierAbstractType" abstract="true"> <complexContent> <extension base="anyType">

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 11 of 90

368

369370

371

372

373

374

375

376

377378379380381382

383

384385386387388389390

391

392393

394

395396397

398

399400

401

402403

404405

406407408409

2122

Page 12: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<attribute name="NameQualifier" type="string" use="optional"/> <attribute name="SPNameQualifier" type="string" use="optional"/> </extension> </complexContent></complexType>

2.3.2 Element <NameIdentifier> The <NameIdentifier> element is of type NameIdentifierType, which restrictsBaseIdentifierAbstractType to simple string content and provides additional attributes as follows:

Format [Optional]A URI reference representing the classification of string-based identifier information. See SectionNameIdentifier Format Identifiers for some URI references that MAY be used as the value of theFormat attribute and their associated descriptions and processing rules. If no Format value isprovided, the identifier urn:oasis:names:tc:SAML:1.0:nameid-format:unspecified (see SectionUnspecified) is in effect.

When a Format value other than those specified in Section NameIdentifier Format Identifiers isused, the content of the <NameIdentifier> element is to be interpreted according to thespecification of that format as defined outside of this specification. If not otherwise indicated bythe specification of the format, issues of anonymity, pseudonymity, and the persistence of theidentifier with respect to the asserting and relying parties are implementation-specific.

SPProvidedIdentifier [Optional]The name identifier established by the service provider or affiliation of providers for the principal,if different from the primary name identifier given in the content of the <NameIdentifier>element.

The following schema fragment defines the <NameIdentifier> element and its NameIdentifierTypecomplex type:

<element name="NameIdentifier" type="saml:NameIdentifierType"/><complexType name="NameIdentifierType" mixed="false"> <simpleContent> <restriction base="saml:BaseIdentifierAbstractType"> <simpleType> <restriction base="string"/> </simpleType> <attribute name="Format" type="anyURI" use="optional"/> <attribute name="SPProvidedIdentifier" type="string"use="optional"/> </restriction> </simpleContent></complexType>

2.3.3 Element <EncryptedIdentifier> The <EncryptedIdentifier> element extends BaseIdentifierAbstractType to carry the content ofthe element in encrypted fashion, as defined by the XML Encryption Syntax and Processing specification[XMLEnc]. The <EncryptedIdentifier> element contains the following additional elements andattributes:

<xenc:EncryptedData> [Required]The encrypted content and associated encryption details, as defined by [XMLEnc]. Theencrypted content MUST contain an element that has a type that is derived fromBaseIdentifierAbstractType or from AssertionType.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 12 of 90

410411412413414

415

416417

418

419420421422423

424425426427428

429

430431432

433434

435436437438439440441442443444445446447

448

449450451452

453

454455456

2324

Page 13: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<xenc:EncryptedKey> [Zero or more]Wrapped decryption keys, as defined by [XMLEnc]. Each wrapped key SHOULD include aRecipient attribute that specifies the entity for whom the key has been encrypted.

Encrypted identifiers are intended as a privacy protection when the plain-text value passes through anintermediary; as such, the ciphertext MUST be unique to any given encryption operation. For more onsuch issues, see [XMLEnc]§6.3.

The following schema fragment defines the <EncryptedIdentifier> element and itsEncryptedIdentifierType complex type:

<element name="EncryptedIdentifier" type="saml:EncryptedIdentifierType"/> <complexType name="EncryptedIdentifierType" mixed="false"> <complexContent> <restriction base="saml:BaseIdentifierType"> <sequence> <element ref="xenc:EncryptedData"/> <element ref="xenc:EncryptedKey" minOccurs="0"maxOccurs="unbounded"/> </sequence> </restriction> </complexContent></complexType>

2.3.4 Element <Issuer> The <Issuer> element, with complex type NameIdentifierType, provides information about the issuerof a SAML assertion or protocol message. The element requires the use of a string to carry the issuer'sname, but permits various attributes of descriptive metadata.

The following schema fragment defines the <Issuer> element:<element name="Issuer" type="saml:NameIdentifierType"/>

2.4 AssertionsThe following sections define the SAML constructs that contain assertion information.

2.4.1 Element <AssertionIDReference>The <AssertionIDReference> element makes a reference to a SAML assertion by its uniqueidentifier. The specific authority who issued the assertion or from whom the assertion can be obtained isnot specified as part of the reference.

The following schema fragment defines the <AssertionIDReference> element:<element name="AssertionIDReference" type="NCName"/>

2.4.2 Element <AssertionURIReference> The <AssertionURIReference> element makes a reference to a SAML assertion by its uniformresource identifier (URI). Dereferencing the URI (in a fashion dictated by the URI) is intended to producethe assertion.

The following schema fragment defines the <AssertionURIReference> element:<element name="AssertionURIReference" type="anyURI"/>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 13 of 90

457

458459

460461462

463464

465466467468469470471472473474475476

477

478479480

481

482

483

484

485

486487488

489

490

491

492493494

495

496

2526

Page 14: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

2.4.3 Element <Assertion>The <Assertion> element is of AssertionType complex type. This type specifies the basic informationthat is common to all assertions, including the following elements and attributes:

MajorVersion [Required]The major version of this assertion. The identifier for the version of SAML defined in thisspecification is 21. SAML versioning is discussed in Section SAML Versioning.

MinorVersion [Required]The minor version of this assertion. The identifier for the version of SAML defined in thisspecification is 01. SAML versioning is discussed in Section SAML Versioning.

AssertionID [Required]The identifier for this assertion. It is of type xsd:ID, and MUST follow the requirements specified inSection 1.2.3 for identifier uniqueness.

Issuer [Required]The SAML authority that created the assertion. The name of the issuer is provided as a string. Theissuer name SHOULD be unambiguous to the intended relying parties. SAML authorities may use anidentifier such as a URI reference that is designed to be unambiguous regardless of context.

IssueInstant [Required]The time instant of issue in UTC, as described in Section Time Values.

<Issuer> [Required]The SAML authority that is making the claim(s) in the assertion. The issuer identity SHOULD beunambiguous to the intended relying parties. If the Format attribute is omitted, the identifierurn:oasis:names:tc:SAML:1.0:nameid-format:unspecified (see section 7.3.1) isassumed.

This specification defines no relationship between the entity represented by this element and thesigner of the assertion (if any). Any such requirements imposed by a relying party that consumes theassertion or to specific profiles are application-specific.

<Subject> [Required]The subject of the statement(s) in the assertion.

<ds:Signature> [Optional]An XML Signature that authenticates the assertion, as described in Section SAML and XMLSignature Syntax and Processing.

<Conditions> [Optional]Conditions that MUST be taken into account in assessing the validity of and/or using the assertion.

<Advice> [Optional]Additional information related to the assertion that assists processing in certain situations but whichMAY be ignored by applications that do not support its use.

<ds:Signature> [Optional]An XML Signature that authenticates the assertion, as described in Section SAML and XMLSignature Syntax and Processing.

One or more of the following statement elements:

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 14 of 90

497

498499

500

501502

503

504505

506

507508

509

510511512

513

514

515

516517518519

520521522

523

524

525

526527

528

529

530

531532

533

534535

536

2728

Page 15: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<Statement>A statement defined in an extension schema.

<SubjectStatement>A subject statement defined in an extension schema.

<AuthenticationStatement>An authentication statement.

<AuthorizationDecisionStatement>An authorization decision statement.

<AttributeStatement>An attribute statement.

The following schema fragment defines the <Assertion> element and its AssertionType complextype:

<element name="Assertion" type="saml:AssertionType"/><complexType name="AssertionType">

<sequence> <element ref="saml:Issuer"/> <element ref="saml:Subject"/> <element ref="ds:Signature" minOccurs="0"/>

<element ref="saml:Conditions" minOccurs="0"/><element ref="saml:Advice" minOccurs="0"/><choice maxOccurs="unbounded">

<element ref="saml:Statement"/> <element ref="saml:SubjectStatement"/>

<element ref="saml:AuthenticationStatement"/><element ref="saml:AuthorizationDecisionStatement"/><element ref="saml:AttributeStatement"/>

</choice> <element ref="ds:Signature" minOccurs="0"/>

</sequence><attribute name="MajorVersion" type="integer" use="required"/><attribute name="MinorVersion" type="integer" use="required"/><attribute name="AssertionID" type="ID" use="required"/>

<attribute name="Issuer" type="string" use="required"/><attribute name="IssueInstant" type="dateTime" use="required"/>

</complexType>

2.4.3.1 Element <Subject>

The <Subject> element specifies the principal that is the subject of all of the (one or more) statementsin the assertion. It contains a name identifier, a series of one or more subject confirmations, or both:

<NameIdentifier>, <EncryptedIdentifier>, or <BaseIdentifier>Identifies the subject.I

<SubjectConfirmation>Information that allows the subject to be authenticated. If more than one subject confirmation isprovided, then usage of any one of them is sufficient to confirm the subject for the purpose ofapplying the assertion.

If the <Subject> element contains both an identifier and one or more subject confirmations, the SAMLauthority is asserting that if the SAML relying party performs the specified <SubjectConfirmation>, itcan treat the entity presenting the assertion to the relying party as the entity that the SAML authority

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 15 of 90

537

538

539

540

541

542

543

544

545

546

547548

549550551552553554555556557558559560561562563564565566567568569570571

572

573574

575

576

577

578579580

581582583

2930

Page 16: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

associates with the name identifier. A <Subject> element SHOULD NOT identify more than oneprincipal.

The following schema fragment defines the <Subject> element and its SubjectType complex type:<element name="Subject" type="saml:SubjectType"/><complexType name="SubjectType"> <choice> <sequence> <choice> <element ref="saml:BaseIdentifier"/> <element ref="saml:NameIdentifier"/> <element ref="saml:EncryptedIdentifier"/> </choice> <element ref="saml:SubjectConfirmation" minOccurs="0"maxOccurs="unbounded"/> </sequence> <element ref="saml:SubjectConfirmation" maxOccurs="unbounded"/> </choice></complexType>

2.4.3.2 Element <Conditions>

The <Conditions> element MAY contain the following elements and attributes:

NotBefore [Optional]Specifies the earliest time instant at which the assertion is valid. The time value is encoded in UTCas described in Section Time Values.

NotOnOrAfter [Optional]Specifies the time instant at which the assertion has expired. The time value is encoded in UTC asdescribed in Section Time Values.

<Condition> [Any Number]Provides an extension point allowing extension schemas to define new conditions.

<AudienceRestrictionCondition> [Any Number]Specifies that the assertion is addressed to a particular audience.

<DoNotCacheCondition> [Any Number] Specifies that the assertion SHOULD be used immediately and MUST NOT be retained for futureuse.

<ProxyRestrictionCondition> [Any Number]Specifies limitations that the asserting party imposes on relying parties that wish to issue subsequentassertions of their own on the basis of the information contained in the original assertion.

The following schema fragment defines the <Conditions> element and its ConditionsType complextype:

<element name="Conditions" type="saml:ConditionsType"/><complexType name="ConditionsType">

<choice minOccurs="0" maxOccurs="unbounded"><element ref="saml:AudienceRestrictionCondition"/>

<element ref="saml:DoNotCacheCondition"<elementref=”saml:DoNotCacheCondition”> <element ref="saml:ProxyRestrictionCondition"/>

<element ref="saml:Condition"/></choice><attribute name="NotBefore" type="dateTime" use="optional"/>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 16 of 90

584585

586

587588589590591592593594595596597598599600601

602

603

604

605606

607

608609

610

611

612

613

614

615616

617

618619

620621

622623624625626627628629630631

3132

Page 17: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<attribute name="NotOnOrAfter" type="dateTime" use="optional"/></complexType>

If an assertion contains a <Conditions> element, the validity of the assertion is dependent on the sub-elements and attributes provided. When processing the sub-elements and attributes of a<Conditions> element, the following rules MUST be used in the order shown to determine the overallvalidity of the assertion:

1. If no sub-elements or attributes are supplied in the <Conditions> element, then the assertion isconsidered to be Valid.

2. If any sub-element or attribute of the <Conditions> element is determined to be invalid, then theassertion is Invalid.

3. If any sub-element or attribute of the <Conditions> element cannot be evaluated, then the validityof the assertion cannot be determined and is deemed to be Indeterminate.

4. If all sub-elements and attributes of the <Conditions> element are determined to be Valid, thenthe assertion is considered to be Valid.

The <Conditions> element MAY be extended to contain additional conditions. If an element containedwithin a <Conditions> element is encountered that is not understood, the status of the conditioncannot be evaluated and the validity status of the assertion MUST be deemed to be Indeterminate inaccordance with rule 3 above.

Note that an assertion that has validity status Valid may not be trustworthy for reasons such as not beingissued by a trustworthy SAML authority or not being authenticated by a trustworthy means.

Also note that some conditions may not directly impact the validity of the containing assertion (theyalways evaluate to Valid), but may restrict the behavior of relying parties with respect to the use of theassertion.

2.4.3.2.1 Attributes NotBefore and NotOnOrAfter

The NotBefore and NotOnOrAfter attributes specify time limits on the validity of the assertion.

The NotBefore attribute specifies the time instant at which the validity interval begins. TheNotOnOrAfter attribute specifies the time instant at which the validity interval has ended.

If the value for either NotBefore or NotOnOrAfter is omitted it is considered unspecified. If theNotBefore attribute is unspecified (and if any other conditions that are supplied evaluate to Valid), theassertion is valid at any time before the time instant specified by the NotOnOrAfter attribute. If theNotOnOrAfter attribute is unspecified (and if any other conditions that are supplied evaluate to Valid),the assertion is valid from the time instant specified by the NotBefore attribute with no expiry. If neitherattribute is specified (and if any other conditions that are supplied evaluate to Valid), the assertion isvalid at any time.

The NotBefore and NotOnOrAfter attributes are defined to have the dateTime simple type that isbuilt in to the W3C XML Schema Datatypes specification [Schema2]. All time instants are specified inUniversal Coordinated Time (UTC) as described in Section Time Values.

Implementations MUST NOT generate time instants that specify leap seconds.

2.4.3.2.2 Element <Condition>

The <Condition> element serves as an extension point for new conditions. ItsConditionAbstractType complex type is abstract and is thus usable only as the base of a derived type.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 17 of 90

632633

634635636637

638639

640641

642643

644645

646647648649

650651

652653654

655

656

657658

659660661662663664665

666667668

669

670

671672

3334

Page 18: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

The following schema fragment defines the <Condition> element and its ConditionAbstractTypecomplex type:

<element name="Condition" type="saml:ConditionAbstractType"/><complexType name="ConditionAbstractType" abstract="true"/>

2.4.3.2.3 Elements <AudienceRestrictionCondition> and <Audience>

The <AudienceRestrictionCondition> element specifies that the assertion is addressed to one ormore specific audiences identified by <Audience> elements. Although a SAML relying party that isoutside the audiences specified is capable of drawing conclusions from an assertion, the SAML authorityexplicitly makes no representation as to accuracy or trustworthiness to such a party. It contains thefollowing elements:

<Audience>A URI reference that identifies an intended audience. The URI reference MAY identify a documentthat describes the terms and conditions of audience membership.

The audience restriction condition evaluates to Valid if and only if the SAML relying party is a member ofone or more of the audiences specified.

The SAML authority cannot prevent a party to whom the assertion is disclosed from taking action on thebasis of the information provided. However, the <AudienceRestrictionCondition> element allowsthe SAML authority to state explicitly that no warranty is provided to such a party in a machine- andhuman-readable form. While there can be no guarantee that a court would uphold such a warrantyexclusion in every circumstance, the probability of upholding the warranty exclusion is considerablyimproved.

The following schema fragment defines the <AudienceRestrictionCondition> element and itsAudienceRestrictionConditionType complex type:

<element name="AudienceRestrictionCondition" type="saml:AudienceRestrictionConditionType"/><complexType name="AudienceRestrictionConditionType">

<complexContent><extension base="saml:ConditionAbstractType">

<sequence><element ref="saml:Audience" maxOccurs="unbounded"/>

</sequence></extension>

</complexContent></complexType><element name="Audience" type="anyURI"/>

2.4.3.2.4 Element <DoNotCacheCondition>

Indicates that the assertion SHOULD be used immediately by the relying party and MUST NOT beretained for future use. Note that no relying party is required to perform caching. However, any that do soMUST observe this conditionA SAML authority SHOULD NOT include more than one<DoNotCacheCondition> element within a <Conditions> element of an assertion. Note that noRelying Party implementation is required to perform caching. However, any that do so MUST observethis condition. If multiple <DoNotCacheCondition> elements appear within a <Conditions> element,a Relying Party MUST treat the multiple elements as though a single <DoNotCacheCondition>element was specified. For the purposes of determining the validity of the <Conditions> element, the<DoNotCacheCondition> (see Section ) is considered to always be valid.

A SAML authority SHOULD NOT include more than one <DoNotCacheCondition> element within a<Conditions> element of an assertion. If multiple <DoNotCacheCondition> elements appear within

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 18 of 90

673674

675676

677

678679680681682

683

684685

686687

688689690691692693

694695

696697698699700701702703704705706707

708

709710711712713714715716717

718719

3536

Page 19: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

a <Conditions> element, a Relying Party MUST treat the multiple elements as though a single<DoNotCacheCondition> element was specified.

For the purposes of determining the validity of the <Conditions> element, the<DoNotCacheCondition> is considered to always be valid.

The following schema fragment defines the <DoNotCacheCondition> element and itsDoNotCacheConditionType complex type:

<element name="DoNotCacheCondition" type="saml:DoNotCacheConditionType"/><element name="DoNotCacheCondition" type="saml:DoNotCacheConditionType" /><complexType name="DoNotCacheConditionType"> <complexContent> <extension base="saml:ConditionAbstractType"/> </complexContent<extension base="saml:ConditionAbstractType"/></complexType </complexContent>

2.4.3.2.5 Element <ProxyRestrictionCondition>

Specifies limitations that the asserting party imposes on relying parties that wish to issue subsequentassertions of their own on the basis of the information contained in the original assertion. A relying partyMUST NOT issue an assertion that itself violates the restrictions specified in this condition on the basisof an assertion containing such a condition.

The <ProxyRestrictionCondition> element contains the following elements and attributes:

Count [Optional]Specifies the number of indirections that MAY exist between this assertion and an assertion whichhas ultimately been issued on the basis of it.

<Audience> [Zero or More]Specifies the set of audiences to whom new assertions MAY be issued on the basis of this assertion.

A Count value of zero indicates that a relying party MUST NOT issue an assertion to another relyingparty on the basis of this assertion. If greater than zero, any assertions so issued MUST themselvescontain a <ProxyRestrictionCondition> element with a Count value of at most one less than thisvalue.

If no <Audience> elements are specified, then no restrictions are made upon the relying parties towhom subsequent assertions can be issued. Otherwise, any assertions so issued MUST themselvescontain an <AudienceRestrictionCondition> element with at least one of the <Audience>elements present in the previous <ProxyRestrictionCondition> element, and no <Audience>elements present that were not in the previous <ProxyRestrictionCondition> element.

A SAML authority SHOULD NOT include more than one <ProxyRestrictionCondition> elementwithin a <Conditions> element of an assertion. If multiple <ProxyRestrictionCondition>elements appear within a <Conditions> element, a relying party MUST treat the multiple elements asthough a single <ProxyRestrictionCondition> element was specified, with a Count value equal tothe lowest of any specified, and the set of <Audience> elements consisting of the union of the elementsspecified.

For the purposes of determining the validity of the <Conditions> element, the<ProxyRestrictionCondition> is considered to always be valid.

The following schema fragment defines the <ProxyRestrictionCondition> element and itsProxyRestrictionConditionType complex type:

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 19 of 90

720721

722723

724725

726727728729730731732

733

734735736737

738

739

740741

742

743

744745746747

748749750751752

753754755756757758

759760

761762

3738

Page 20: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<element name="ProxyRestrictionCondition"type="saml:ProxyRestrictionConditionType"/><complexType name="ProxyRestrictionConditionType"> <complexContent> <extension base="saml:ConditionAbstractType"> <sequence> <element ref="saml:Audience" minOccurs="0"maxOccurs="unbounded"/> </sequence> <attribute name="Count" type="nonNegativeInteger"use="optional"/> </extension> </complexContent></complexType>

2.4.3.3 Element <Advice>

The <Advice> element contains any additional information that the SAML authority wishes to provide.This information MAY be ignored by applications without affecting either the semantics or the validity ofthe assertion.

The <Advice> element contains a mixture of zero or more <Assertion> elements,<AssertionIDReference> elements, <AssertionURIReference> elements, and elements in othernamespaces, with lax schema validation in effect for these other elements.

Following are some potential uses of the <Advice> element:

Include evidence supporting the assertion claims to be cited, either directly (through incorporatingthe claims) or indirectly (by reference to the supporting assertions).

State a proof of the assertion claims.

Specify the timing and distribution points for updates to the assertion.

The following schema fragment defines the <Advice> element and its AdviceType complex type:<element name="Advice" type="saml:AdviceType"/><complexType name="AdviceType">

<choice minOccurs="0" maxOccurs="unbounded"><element ref="saml:AssertionIDReference"/>

<element ref="saml:AssertionURIReference"/><element ref="saml:Assertion"/><any namespace="##other" processContents="lax"/>

</choice></complexType>

2.5 StatementsThe following sections define the SAML constructs that contain statement information.

2.5.1 Element <Statement> The <Statement> element is an extension point that allows other assertion-based applications to reusethe SAML assertion framework. Its StatementAbstractType complex type is abstract and is thus usableonly as the base of a derived type. This element has an optional attribute:

SessionIndex [Optional]Indexes a particular session between the subject and the authority issuing this statement. The valueof the attribute SHOULD be a small, positive integer, but may be any string of text. This value MUST

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 20 of 90

763764765766767768769770771772773774775776

777

778779780

781782783

784

785786

787

788

789

790791792793794795796797798

799

800

801

802803804

805

806807

3940

Page 21: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

NOT be a globally unique value for a principal's session at the authority.

The following schema fragment defines the <Statement> element and its StatementAbstractTypecomplex type:

<element name="Statement" type="saml:StatementAbstractType"/><complexType name="StatementAbstractType" abstract="true"/> <attribute name="SessionIndex" type="string" use="optional"/Element<SubjectStatement>

The <SubjectStatement> element is an extension point that allows other assertion-basedapplications to reuse the SAML assertion framework. It contains a <Subject> element that allows aSAML authority to describe a subject. Its SubjectStatementAbstractType complex type, which extendsStatementAbstractType, is abstract and is thus usable only as the base of a derived type.

The following schema fragment defines the <SubjectStatement> element and itsSubjectStatementAbstractType abstract type:

<element name="SubjectStatement" type="saml:SubjectStatementAbstractType"/><complexType name="SubjectStatementAbstractType" abstract="true"> <complexContent> <extension base="saml:StatementAbstractType"> <sequence> <element ref="saml:Subject"/> </sequence> </extension> </complexContent></complexType>

2.5.1.1 Element <Subject>

The <Subject> element specifies the principal that is the subject of the statement. It contains either orboth of the following elements:

<NameIdentifier>An identification of a subject by its name and security domain.

<SubjectConfirmation>Information that allows the subject to be authenticated.

If the <Subject> element contains both a <NameIdentifier> and a <SubjectConfirmation>, theSAML authority is asserting that if the SAML relying party performs the specified<SubjectConfirmation>, it can be confident that the entity presenting the assertion to the relyingparty is the entity that the SAML authority associates with the <NameIdentifier>. A <Subject>element SHOULD NOT identify more than one principal.

The following schema fragment defines the <Subject> element and its SubjectType complex type:<element name="Subject" type="saml:SubjectType"/><complexType name="SubjectType"> <choice> <sequence> <element ref="saml:NameIdentifier"/> <element ref="saml:SubjectConfirmation" minOccurs="0"/> </sequence> <element ref="saml:SubjectConfirmation"/> </choice></complexType>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 21 of 90

808

809810

811812813814

815816817818

819820

821822823824825826827828829830

831

832833

834

835

836

837

838839840841842

843

844845846847848849850851852853

4142

Page 22: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

2.5.1.2 Element <BaseNameIdentifier>

The <BaseNameIdentifier> element is an extension point that allows applications to add new kindsof name identifiers. Its BaseNameIdentifierAbstractType complex type is abstract and is thus usableonly as the base of a derived type. It defines the following common attributes for all name identifierrepresentations:

NameQualifier [Optional]The security or administrative domain that qualifies the name identifier of the subject. Thisattribute provides a means to federate names from disparate user stores without collision.

SPNameQualifier [Optional]Further qualifies a federated name identifier with the name of the service provider or affiliation ofproviders which has federated the principal's identity.

NotBefore [Optional]The date and time at which the name identifier becomes usable for referring to the subject.Generally used when encrypting the resulting element to indicate the time at which theencryption was performed, so that decrypting parties may enforce time-sensitive policies on use.

NotOnOrAfter [Optional]Indicates the time at which the identifier should no longer be used to refer to the subject.Generally used with encrypted or transient identifiers.

The NotBefore and NotOnOrAfter attributes do not affect or interact with the validity of an assertionwhose subject contains a name identifier decorated with them. Rather, they represent the validity of thebinding of the name identifier to the subject of the assertion.

The following schema fragment defines the <BaseNameIdentifier> element and itsBaseNameIdentifierType complex type:

<element name="BaseNameIdentifier" type="saml:BaseNameIdentifierAbstractType"/><complexType name="BaseNameIdentifierAbstractType" abstract="true"> <complexContent> <extension base="anyType"> <attribute name="NameQualifier" type="string" use="optional"/> <attribute name="SPNameQualifier" type="string" use="optional"/> <attribute name="NotBefore" type="dateTime" use="optional"/> <attribute name="NotOnOrAfter" type="dateTime" use="optional"/> </extension> </complexContent></complexType>

2.5.1.3 Element <NameIdentifier>

The <NameIdentifier> element is of type NameIdentifierType, which restrictsBaseNameIdentifierAbstractType to simple string content and provides additional attributes as follows:

Format [Optional]A URI reference representing the classification of string-based identifier information. See SectionNameIdentifier Format Identifiers for some URI references that MAY be used as the value of theFormat attribute, and associated descriptions of the content, and processing rules. If noFormat value is provided, the identifier urn:oasis:names:tc:SAML:1.0:nameid-format:unspecified(see Section Unspecified) is in effect. When a Format value other than those specified inSection NameIdentifier Format Identifiers is used, the content of the <NameIdentifier>element is to be interpreted according to the specification of that format as defined outside of this

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 22 of 90

854

855856857858

859

860861

862

863864

865

866867868

869

870871

872873874

875876

877878879880881882883884885886887

888

889890

891

892893894895896897898

4344

Page 23: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

specification. If not otherwise indicated by the specification of the format, issues of anonymity,pseudonymity, and the persistence of the identifier with respect to the asserting and relyingparties are implementation-specific.

SPProvidedIdentifier [Optional]The name identifier established by the service provider or affiliation of providers for the principal,if different from the primary name identifier given in the content of the <NameIdentifier>element.

The following schema fragment defines the <NameIdentifier> element and its NameIdentifierTypecomplex type:

<element name="NameIdentifier" type="saml:NameIdentifierType"substitutionGroup="saml:BaseNameIdentifier"/><complexType name="NameIdentifierType" mixed="false"> <simpleContent> <restriction base="saml:BaseNameIdentifierAbstractType"> <simpleType> <restriction base="string"/> </simpleType> <attribute name="Format" type="anyURI" use="optional"/> <attribute name="SPProvidedIdentifier" type="string"use="optional"/> </restriction> </simpleContent></complexType>

2.5.1.4 Element <EncryptedNameIdentifier>

The <EncryptedNameIdentifier> element extends BaseNameIdentifierAbstractType to carry thecontent of the element in encrypted fashion, as defined by [XMLEnc]. The<EncryptedNameIdentifier> element contains the following additional elements and attributes:

<xenc:EncryptedData> [Required]The encrypted content and associated encryption details, as defined by [XMLEnc]. Theencrypted content MUST be a <BaseNameIdentifier> element or a derivation of it.

<xenc:EncryptedKey> [Optional]A wrapped decryption key, as defined by [XMLEnc].

Encrypted identifiers are intended as a privacy protection when the plain-text value passes through anintermediary; as such, the ciphertext MUST be unique to any given encryption operation. For more onsuch issues, see [XMLEnc] §6.3.

The following schema fragment defines the <EncryptedNameIdentifier> element and itsEncryptedNameIdentifierType complex type:

<element name="EncryptedNameIdentifier" type="saml:EncryptedNameIdentifierType"substitutionGroup="saml:BaseNameIdentifier"/> <complexType name="EncryptedNameIdentifierType" mixed="false"> <complexContent> <restriction base="saml:BaseNameIdentifierType"> <sequence> <element ref="xenc:EncryptedData"/> <element ref="xenc:EncryptedKey" minOccurs="0"/> </sequence> </restriction> </complexContent>

</complexType>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 23 of 90

899900901

902

903904905

906907

908909910911912913914915916917918919920921

922

923924925

926

927928

929

930

931932933

934935

936937938939940941942943944945946

947

4546

Page 24: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

2.5.1.5 Elements <SubjectConfirmation>, <ConfirmationMethod>, and<SubjectConfirmationData>

The <SubjectConfirmation> element specifies a subject by supplying data that allows the subject tobe authenticated. It contains the following elements in order:

<ConfirmationMethod> [RequiredOne or more]A URI reference that identifies a protocol to be used to authenticate the subject. URI referencesidentifying SAML-defined confirmation methods are currently defined with the SAML profiles in theSAML profiles specification [SAMLProf]. Additional methods may be added by defining new URIsandbindings and profiles specification [SAMLBind]. Additional methods may be added by definingnew profiles or by private agreement.

<SubjectConfirmationData> [Optional]Additional authentication information to be used by a specific authentication protocol.

<ds:KeyInfo> [Optional]An XML Signature [XMLSig] element that identifies a cryptographic keyprovides access to acryptographic key held by the subject.

The following schema fragment defines the <SubjectConfirmation> element and itsSubjectConfirmationType complex type, along with the <SubjectConfirmationData> element andthe <ConfirmationMethod> element:

<element name="SubjectConfirmation" type="saml:SubjectConfirmationType"/><complexType name="SubjectConfirmationType">

<sequence><element ref="saml:ConfirmationMethod" maxOccurs="unbounded"/><element ref="saml:SubjectConfirmationData" minOccurs="0"/><element ref="ds:KeyInfo" minOccurs="0"/>

</sequence></complexType><element name="SubjectConfirmationData" type="anyType"/><element name="ConfirmationMethod" type="anyURI"/>

2.5.2 Element <AuthenticationStatement>The <AuthenticationStatement> element describes a statement by the SAML authority assertingthat the statement’s subject was authenticated by a particular means at a particular time. It is of typeAuthenticationStatementType, which extends SubjectStatementAbstractType with the addition of thefollowing elements and attributes:

AuthenticationMethod [Required]A URI reference that specifies the type of authentication that took place. URI references identifyingcommon authentication protocols are listed in Section Authentication Method Identifiers. A value ofurn:oasis:names:tc:SAML:2.0:am:authncontext indicates that an <AuthnContext>element is included in the statement that describes further details of the authentication.

AuthenticationInstant [Required]Specifies the time at which the authentication took place. The time value is encoded in UTC asdescribed in Section Time Values.

<SubjectLocality> [Optional]Specifies the DNS domain name and IP address for the system entity from which the subject wasapparently authenticated.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 24 of 90

948

949

950951

952

953954955956957

958

959

960

961962

963964965

966967968969970971972973974975

976

977978979980

981

982983984985

986

987988

989

990991

4748

Page 25: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<AuthnContext> [Optional]The context used by the identity provider in the authentication event that yielded this statement.Contains an authentication context statement or a reference to one. Optionally contains a referenceto an authentication context class.

Note: The <AuthorityBinding> element and its corresponding type were removedfrom <AuthenticationStatement> for V2.0 of SAML.

<AuthenticationStatement> elements MUST contain a SessionIndex value, conforming to therules specified in section 2.5.1.

The following schema fragment defines the <AuthenticationStatement> element and itsAuthenticationStatementType complex type:

<element name="AuthenticationStatement" type="saml:AuthenticationStatementType"/>

<complexType name="AuthenticationStatementType"><complexContent>

<extension base="saml:SubjectStatementAbstractType"><sequence>

<element ref="saml:SubjectLocality" minOccurs="0"/> <element ref="saml:AuthnContext" minOccurs="0"/>

</sequence><attribute name="AuthenticationMethod" type="anyURI"

use=”required”/><attribute name="AuthenticationInstant" type="dateTime"

use=”required”/></extension>

</complexContent></complexType>

2.5.2.1 Element <SubjectLocality>

The <SubjectLocality> element specifies the DNS domain name and IP address for the systemfrom which the subjecentity that was authenticated. It has the following attributes:

IPAddress [Optional]The IP address of the system from which the subject entity that was authenticated.

DNSAddress [Optional]The DNS address of the system from which the subjecentity that was authenticated.

This element is entirely advisory, since both these fields are quite easily “spoofed,” but current practiceappears to require its inclusion.

The following schema fragment defines the <SubjectLocality> element and its SubjectLocalityType complex type:

<element name="SubjectLocality" type="saml: SubjectLocalityType"/>

<complexType name="SubjectLocalityType"><attribute name="IPAddress" type="string" use="optional"/><attribute name="DNSAddress" type="string" use="optional"/>

</complexType>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 25 of 90

992

993994995

996997

998999

10001001

1002100310041005100610071008100910101011101210131014101510161017

1018

10191020

1021

1022

1023

1024

10251026

10271028

102910301031103210331034

4950

Page 26: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

2.5.2.2 Element <AuthnContext>

The <AuthnContext> element specifies the context of an authentication event with an optional contextclass URI followed by an authentication context statement or statement reference. It's complexAuthnContextType has the following elements:

<AuthnContextClassRef> [Optional]A URI identifying an authentication context class that describes the authentication context statementthat follows.

<AuthnContextStatement> or <AuthnContextStatementRef> [Required]Either an authentication context statement, or a URI that identifies such a statement. The URI MAYdirectly resolve into an XML document containing the referenced statement.

The following schema fragment defines the <AuthnContext> element and its AuthnContextTypecomplex type:

<element name="AuthnContext" type="saml:AuthnContextType"/><complexType name="AuthnContextType"> <sequence> <element ref="saml:AuthnContextClassRef" minOccurs="0"/> <choice> <element ref="saml:AuthnContextStatement"/> <element ref="saml:AuthnContextStatementRef"/> </choice> </sequence></complexType><element name="AuthnContextClassRef" type="anyURI"/><element name="AuthnContextStatementRef" type="anyURI"/><element name="AuthnContextStatement" type="anyType"/>

2.5.3 Element <AttributeStatement>The <AttributeStatement> element describes a statement by the SAML authority asserting that thestatement’s subject is associated with the specified attributes. It is of type AttributeStatementType,which extends SubjectStatementAbstractType with the addition of the following element:

<Attribute> [One or More]The <Attribute> element specifies an attribute of the subject.

The following schema fragment defines the <AttributeStatement> element and itsAttributeStatementType complex type:

<element name="AttributeStatement" type="saml:AttributeStatementType"/><complexType name="AttributeStatementType">

<complexContent><extension base="saml:SubjectStatementAbstractType">

<sequence><element ref="saml:Attribute"

maxOccurs="unbounded"/></sequence>

</extension></complexContent>

</complexType>

2.5.3.1 Elements <AttributeDesignator> and <Attribute>

The <AttributeDesignator> element identifies an attribute name within an attribute namespace. Ithas the AttributeDesignatorType complex type. It is used in an attribute query to request that attribute

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 26 of 90

1035

103610371038

1039

10401041

1042

10431044

10451046

1047104810491050105110521053105410551056105710581059

1060

106110621063

1064

1065

10661067

10681069107010711072107310741075107610771078

1079

10801081

5152

Page 27: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

values within a specific namespace be returned (see Section Element <AttributeQuery> for moreinformation). The <AttributeDesignator> element contains the following XML attributes:

NamAttributeNamespace [Required]The namespace in which the AttributeName elements are interpreted.

AttributeName [Required]The name of the attribute.

NameFormat [Required]A URI reference representing the classification of the attribute name for purposes of interpretingthe name. See Section 7.x for some URI references that MAY be used as the value of theNameFormat attribute and their associated descriptions and processing rules. If noNameFormat value is provided, the identifier urn:oasis:names:tc:SAML:2.0:attname-format:unspecified (see Section 7.x) is in effect.

ValueType [Optional]A URI reference representing the datatype of the desired or supplied attribute. If no ValueTypevalue is provided, the identifier urn:oasis:names:tc:saml:2.0:valuetype-format:appSpecific (seeSection 7.x) is in effect. Note that datatypes specified on the <AttributeValue> elementusing xsi:type have no SAML-defined relationship with ValueType. The ValueType setting(default or explicit) in an attribute query using the <AttributeDesignator> element MUST beexactly matched (in addition to other exact matches as described in Section x) in order for anattribute to be returned.

The following schema fragment defines the <AttributeDesignator> element and itsAttributeDesignatorType complex type:

<element name="AttributeDesignator" type="saml:AttributeDesignatorType"/><complexType name="AttributeDesignatorType">

<attribute name="AttributeName" type="string" use="required"/><attribute name="NameFormatAttributeNamespace" type="anyURI"

use="required"/> <attribute name="ValueType" type="anyURI" use="optional"/</complexType></complexType>

The <Attribute> element supplies the value for an attribute of an assertion subject. It has theAttributeType complex type, which extends AttributeDesignatorType with the addition of the followingelement and attributes:

Source [Optional]The source location or database from which the attribute came. Interpretation of the sourceinformation is application-specific.

The <Attribute> element supplies the value for an attribute of an assertion subject. It has theAttributeType complex type, which extends AttributeDesignatorType with the addition of the followingelement:

<AttributeValue> [Any Number]The value of the attribute. If an attribute contains more than one discrete value, it isRECOMMENDED that each value appear in its own <AttributeValue> element. If the attributeexists but has no value, then the <AttributeValue> element MUST be omitted. If more than one<AttributeValue> element is supplied for an attribute, and any of the elements have a datatypeassigned through xsi:type, then all of the <AttributeValue> elements must have the identicaldatatype assigned.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 27 of 90

10821083

1084

1085

1086

1087

1088

10891090109110921093

1094

1095109610971098109911001101

11021103

1104110511061107110811091110

111111121113

1114

11151116

111711181119

1120

112111221123112411251126

5354

Page 28: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

Arbitrary attributesThis complex type uses an <xsd:anyAttribute> extension point to allow for arbitrary XMLattributes to be added to <Attribute> constructs without the need for an explicit schemaextension. This allows additional fields to be added as needed to supply the context in which theattribute should be understood. SAML extensions MUST NOT add local (non-namespace-qualified) XML attributes to the AttributeType complex type or to any element bound to this typeor a derivation of it; such attributes are reserved for future maintenance and enhancement ofSAML itself.

The following schema fragment defines the <Attribute> element and its AttributeType complex type:<element name="Attribute" type="saml:AttributeType"/><complexType name="AttributeType">

<complexContent><extension base="saml:AttributeDesignatorType">

<sequence><element ref="saml:AttributeValue” minOccurs="0"

maxOccurs="unbounded"/></sequence>

<anyAttribute></extension>

</complexContent></complexType>

2.5.3.1.1 Element <AttributeValue>

The <AttributeValue> element supplies the value of a specified attribute. It is of the anyType simpletype, which allows any well-formed XML to appear as the content of the element.

If the data content of an AttributeValue element is of an XML Schema simple type (such as xsd:integeror xsd:string), the data type MAY be declared explicitly by means of an xsi:type declaration in the<AttributeValue> element. If the attribute value contains structured data, the necessary dataelements MAY be defined in an extension schema.

Note: Specifying a datatype on <AttributeValue> using xsi:type will require thepresence of the extension schema that defines the datatype in order for schemaprocessing to proceed.

The following schema fragment defines the <AttributeValue> element:<element name="AttributeValue" type="anyType"/>

2.5.4 Element <AuthorizationDecisionStatement>

Note: The <AuthorizationDecisionStatement> feature has been frozen as ofSAML V2.0, with no future enhancements planned. Users who require additionalfunctionality may want to consider the eXtensible Access Control Markup Language[XACML], which offers enhanced authorization decision features.

The <AuthorizationDecisionStatement> element describes a statement by the SAML authorityasserting that a request for access by the statement’s subject to the specified resource has resulted inthe specified authorization decision on the basis of some optionally specified evidence.

The resource is identified by means of a URI reference. In order for the assertion to be interpretedcorrectly and securely, the SAML authority and SAML relying party MUST interpret each URI referencein a consistent manner. Failure to achieve a consistent URI reference interpretation can result in different

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 28 of 90

1127

1128112911301131113211331134

1135

113611371138113911401141114211431144114511461147

1148

11491150

1151115211531154

115511561157

1158

1159

1160

1161116211631164

116511661167

116811691170

5556

Page 29: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

authorization decisions depending on the encoding of the resource URI reference. Rules for normalizingURI references are to be found in IETF RFC 2396 [RFC 2396] §6:

In general, the rules for equivalence and definition of a normal form, if any, are schemedependent. When a scheme uses elements of the common syntax, it will also use the commonsyntax equivalence rules, namely that the scheme and hostname are case insensitive and a URLwith an explicit ":port", where the port is the default for the scheme, is equivalent to one wherethe port is elided.

To avoid ambiguity resulting from variations in URI encoding SAML system entities SHOULD employ theURI normalized form wherever possible as follows:

SAML authorities SHOULD encode all resource URI references in normalized form.

Relying parties SHOULD convert resource URI references to normalized form prior to processing.

Inconsistent URI reference interpretation can also result from differences between the URI referencesyntax and the semantics of an underlying file system. Particular care is required if URI references areemployed to specify an access control policy language. The following security conditions should besatisfied by the system which employs SAML assertions:

Parts of the URI reference syntax are case sensitive. If the underlying file system is case insensitive,a requester SHOULD NOT be able to gain access to a denied resource by changing the case of apart of the resource URI reference.

Many file systems support mechanisms such as logical paths and symbolic links, which allow usersto establish logical equivalences between file system entries. A requester SHOULD NOT be able togain access to a denied resource by creating such an equivalence.

The <AuthorizationDecisionStatement> element is of typeAuthorizationDecisionStatementType, which extends SubjectStatementAbstractType with theaddition of the following elements (in order) and attributes:

Resource [Required]A URI reference identifying the resource to which access authorization is sought. It is permitted forthis attribute to have the value of the empty URI reference (""), and the meaning is defined to be "thestart of the current document", as specified by IETF RFC 2396 [RFC 2396] §4.2.

Decision [Required]The decision rendered by the SAML authority with respect to the specified resource. The value is ofthe DecisionType simple type.

<Action> [One or more]The set of actions authorized to be performed on the specified resource.

<Evidence> [Optional]A set of assertions that the SAML authority relied on in making the decision.

The following schema fragment defines the <AuthorizationDecisionStatement> element and itsAuthorizationDecisionStatementType complex type:

<element name="AuthorizationDecisionStatement"type="saml:AuthorizationDecisionStatementType"/><complexType name="AuthorizationDecisionStatementType">

<complexContent><extension base="saml:SubjectStatementAbstractType">

<sequence><element ref="saml:Action" maxOccurs="unbounded"/><element ref="saml:Evidence" minOccurs="0"/>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 29 of 90

11711172

11731174117511761177

11781179

1180

1181

1182118311841185

118611871188

118911901191

119211931194

1195

119611971198

1199

12001201

1202

1203

1204

1205

12061207

12081209121012111212121312141215

5758

Page 30: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

</sequence><attribute name="Resource" type="anyURI" use="required"/><attribute name="Decision" type="saml:DecisionType"

use="required"/></extension>

</complexContent></complexType>

2.5.4.1 Element <Action>

The <Action> element specifies an action on the specified resource for which permission is sought. Ithas the following attribute and string-data content:

Namespace [Optional]A URI reference representing the namespace in which the name of the specified action is to beinterpreted. If this element is absent, the namespace urn:oasis:names:tc:SAML:1.0:action:rwedc-negation specified in Section Read/Write/Execute/Delete/Control with Negation is in effect.

string data [Required]An action sought to be performed on the specified resource.

The following schema fragment defines the <Action> element and its ActionType complex type:<element name="Action" type="saml:ActionType"/><complexType name="ActionType">

<simpleContent><extension base="string">

<attribute name="Namespace" type="anyURI"/></extension>

</simpleContent></complexType>

2.5.4.2 Element <Evidence>

The <Evidence> element contains an assertion or assertion reference that the SAML authority relied onin issuing the authorization decision. It has the EvidenceType complex type. It contains a mixture of oneor more of the following elements:

<AssertionIDReference> [Any number]Specifies an assertion by reference to the value of the assertion’s AssertionID attribute.

<AssertionURIReference> [Any number]Specifies an assertion by reference to a URI.

<Assertion> [Any number]Specifies an assertion by value.

Providing an assertion as evidence MAY affect the reliance agreement between the SAML relying partyand the SAML authority making the authorization decision. For example, in the case that the SAMLrelying party presented an assertion to the SAML authority in a request, the SAML authority MAY usethat assertion as evidence in making its authorization decision without endorsing the <Evidence>element’s assertion as valid either to the relying party or any other third party.

The following schema fragment defines the <Evidence> element and its EvidenceType complex type:<element name="Evidence" type="saml:EvidenceType"/><complexType name="EvidenceType">

<choice maxOccurs="unbounded">

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 30 of 90

1216121712181219122012211222

1223

12241225

1226

122712281229

1230

1231

1232

12331234123512361237123812391240

1241

124212431244

1245

1246

1247

1248

1249

1250

12511252125312541255

1256

125712581259

5960

Page 31: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<element ref="saml:AssertionIDReference"/> <element ref="saml:AssertionURIReference"/>

<element ref="saml:Assertion"/></choice>

</complexType>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 31 of 90

12601261126212631264

6162

Page 32: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

3 SAML ProtocolsSAML assertions and related/supporting messages MAY be generated and exchanged using a variety ofprotocols. The bindings specification for SAML [SAMLBind] describes specific means of transportingqueries, assertions, and other messages using existing widely deployed transportMAY be generated andexchanged using a variety of protocols. The bindings and profiles specification for SAML [SAMLBind]describes specific means of transporting assertions using existing widely deployed protocols.

Specific SAML request and response messages derive from common types. The requester sends anelement derived from RequestAbstractType to a SAML responder, and the responder generates anelement adhering to or deriving from StatusResponseTypeAML-aware requesters MAY in additionuse the SAML request-response protocol defined by the <Request> and <Response> elements.The requester sends a <Request> element to a SAML responder, and the responder generates a<Response> element, as shown in Figure 1.

SvOutPlaceObject

Figure 1: SAML Request-Response Protocol

The protocols defined by SAML are as follows:• Assertion request (includes a direct request of the desired assertions, as well as querying for

assertions that meet particular criteria)

• Request for authentication to be performed

• Request to register a federated name

• Request to retrieve a protocol message by means of an artifact

• Request to terminate a federated name registration

• Request for a near-simultaneous logout of a collection of related sessions (“single logout”)

• Request a name identifier mapping

3.1 Schema Header and Namespace DeclarationsThe following schema fragment defines the XML namespaces and other header information for theprotocol schema:

<schema targetNamespace="urn:oasis:names:tc:SAML:2.0:protocol" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="unqualified"attributeFormDefault="unqualified"

blockDefault="substitution"

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 32 of 90

Process RequestProcess RequestRequestAbstractType StatusResponseType

1265

12661267126812691270

127112721273127412751276

1277

1279

1280

12811282

1283

1284

1285

1286

1287

1288

1289

12901291

129212931294129512961297129812991300

6364

Page 33: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

version="2.0"><import namespace="urn:oasis:names:tc:SAML:2.0:assertion"

schemaLocation="sstc-saml-schema-assertion-2.0.xsd"/><import namespace="http://www.w3.org/2000/09/xmldsig#"

schemaLocation=" http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd "/>

<annotation><documentation>

Document identifier: sstc-saml-schema-protocol-2.0 Location: http://www.oasis-open.org/committees/documents.php?wg_abbrev=security Revision history: Updated the schema and namespace to V2.0. Removed <RespondWith> and its corresponding type. </documentation>

</annotation>…</schema>

3.2 Requests and ResponsesThe following sections define the SAML constructs that underlie request and response messagescontainrequest information.

3.2.1 Complex Type RequestAbstractTypeAll SAML requests are of types that are derived from the abstract RequestAbstractType complex type.This type defines common attributes and elements that are associated with all SAML requests:

RequestID [Required]An identifier for the request. It is of type xsd:ID and MUST follow the requirements specified inSection 1.2.3 for identifier uniqueness. The values of the RequestID attribute in a request and theInResponseTo attribute in the corresponding response MUST match.

MajorVersion [Required]The major version of this request. The identifier for the version of SAML defined in this specificationis 21. SAML versioning is discussed in Section SAML Versioning.

MinorVersion [Required]The minor version of this request. The identifier for the version of SAML defined in this specificationis 01. SAML versioning is discussed in Section SAML Versioning.

IssueInstant [Required]The time instant of issue of the request. The time value is encoded in UTC as described in SectionTime Values.

Consent [Optional]Indicates whether or not consent has been obtained from a user in the sending this request.

<Issuer> [Optional]Identifies the entity that generated the request message.

<ds:Signature> [Optional]An XML Signature that authenticates the request, as described in Section SAML and XML SignatureSyntax and Processing.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 33 of 90

130113021303130413051306130713081309131013111312131313141315131613171318

1319

13201321

1322

13231324

1325

132613271328

1329

13301331

1332

13331334

1335

13361337

1338

1339

1340

1341

1342

13431344

6566

Page 34: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<RelayState> [Optional]This contains state information that MUST be relayed back in the associated response.

<Extensions> [Optional]This contains optional protocol message extension elements that are agreed upon between thecommunicating parties.

Note: The <RespondWith> element has been removed from <Request> for V2.0 ofSAML.

The following schema fragment defines the RequestAbstractType complex type:<complexType name="RequestAbstractType" abstract="true"> <sequence> <element ref="saml:Issuer" minOccurs="0"/> <element ref="ds:Signature" minOccurs="0"/> <element ref="samlp:RelayState" minOccurs="0"/> <element ref="samlp:Extensions" minOccurs="0"/> </sequence>

<attribute name="RequestID" type="ID" use="required"/><attribute name="MajorVersion" type="integer" use="required"/><attribute name="MinorVersion" type="integer" use="required"/><attribute name="IssueInstant" type="dateTime" use="required"/>

<attribute name="Consent" type="anyURI" use="optional"/></complexType><element name="Extensions" type="samlp:ExtensionsType"/><complexType name="ExtensionsType"> <sequence> <any namespace="##any" processContents="lax"maxOccurs="unbounded"/> </sequence></complexType>

3.2.1.1 Element <RelayState>

SAML requests MAY contain a string-valued element containing state information that the requesterwishes the responder to include in the response. This is particularly useful with asynchronous bindingsof protocol messages, such as the encoding of messages in browser URLs. This data SHOULD beintegrity-protected by the requester and MAY have other protections placed on it by the requester, suchas confidentiality. The length of this value SHOULD be kept as short as possible because of limitationsof the bindings in which it may be needed.

The following schema fragment defines the <RelayState> element:<element name="RelayState" type="string"/>

3.2.2 Complex Type StatusResponseType All SAML responses are of types that are derived from the StatusResponseType complex type. Thistype defines common attributes and elements that are associated with all SAML responses:

ResponseID [Required]An identifier for the response. It is of type xsd:ID, and MUST follow the requirements specified inSection 1.2.3 for identifier uniqueness.

InResponseTo [Optional]A reference to the identifier of the request to which the response corresponds, if any. If the responseis not generated in response to a request, or if the RequestID attribute value of a request cannot be

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 34 of 90

1345

1346

1347

13481349

13501351

1352

13531354135513561357135813591360136113621363136413651366136713681369137013711372

1373

137413751376137713781379

1380

1381

1382

13831384

1385

13861387

1388

13891390

6768

Page 35: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

determined (because the request is malformed), then this attribute MUST NOT be present.Otherwise, it MUST be present and its value MUST match the value of the correspondingRequestID attribute value.

MajorVersion [Required]The major version of this response. The identifier for the version of SAML defined in thisspecification is 2. SAML versioning is discussed in Section SAML Versioning.

MinorVersion [Required]The minor version of this response. The identifier for the version of SAML defined in thisspecification is 0. SAML versioning is discussed in Section SAML Versioning.

IssueInstant [Required]The time instant of issue of the response. The time value is encoded in UTC as described in SectionTime Values.

Recipient [Optional]The intended recipient of this response. This is useful to prevent malicious forwarding of responsesto unintended recipients, a protection that is required by some use profiles. It is set by the generatorof the response to a URI reference that identifies the intended recipient. If present, the actualrecipient MUST check that the URI reference identifies the recipient or a resource managed by therecipient. If it does not, the response MUST be discarded.

<Issuer> [Optional]Identifies the entity that generated the response message.

<ds:Signature> [Optional]An XML Signature that authenticates the response, as described in Section SAML and XMLSignature Syntax and Processing.

<RelayState> [Optional]This contains state information from the associated request being relayed back in the response. ItMUST match the <RelayState> value in the associated request, if any.

<Extensions> [Optional]This contains optional protocol message extension elements that are agreed upon between thecommunicating parties.

<Status> [Required]A code representing the status of the corresponding request.

The following schema fragment defines the StatusResponseType complex type:<complexType name="StatusResponseType"> <sequence> <element ref="saml:Issuer" minOccurs="0"/> <element ref="ds:Signature" minOccurs="0"/> <element ref="samlp:RelayState" minOccurs="0"/> <element ref="samlp:Extensions" minOccurs="0"/> <element ref="samlp:Status"/> </sequence> <attribute name="ResponseID" type="ID" use="required"/> <attribute name="InResponseTo" type="NCName" use="optional"/> <attribute name="MajorVersion" type="integer" use="required"/> <attribute name="MinorVersion" type="integer" use="required"/> <attribute name="IssueInstant" type="dateTime" use="required"/> <attribute name="Recipient" type="anyURI" use="optional"/>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 35 of 90

139113921393

1394

13951396

1397

13981399

1400

14011402

1403

14041405140614071408

1409

1410

1411

14121413

1414

14151416

1417

14181419

1420

1421

1422

14231424142514261427142814291430143114321433143414351436

6970

Page 36: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

</complexType>

3.2.2.1 Element <Status>

The <Status> element contains the following elements:

<StatusCode> [Required]A code representing the status of the corresponding request.

<StatusMessage> [Optional]A message which MAY be returned to an operator.

<StatusDetail> [Optional]Additional information concerning an error condition.

The following schema fragment defines the <Status> element and its StatusType complex type:<element name="Status" type="samlp:StatusType"/><complexType name="StatusType"> <sequence> <element ref="samlp:StatusCode"/> <element ref="samlp:StatusMessage" minOccurs="0"/> <element ref="samlp:StatusDetail" minOccurs="0"/> </sequence></complexType>

3.2.2.2 Element <StatusCode>

The <StatusCode> element specifies one or more possibly nested, codes representing the status of thecorresponding request. The <StatusCode> element has the following element and attribute:

Value [Required]The status code value. This attribute contains an XML Schema QName; a namespace prefix MUSTbe provided. The value of the topmost <StatusCode> element MUST be from the top-level listprovided in this section.

<StatusCode> [Optional]A subordinate status code that provides more specific information on an error condition.

The top-level <StatusCode> values are QNames associated with the SAML protocol namespace. Thelocal parts of these QNames are as follows:

SuccessThe request succeeded.

VersionMismatchThe SAML responder could not process the request because the version of the request messagewas incorrect.

RequesterThe request could not be performed due to an error on the part of the requester.

ResponderThe request could not be performed due to an error on the part of the SAML responder or SAMLauthority.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 36 of 90

1437

1438

1439

1440

1441

1442

1443

1444

1445

1446

14471448144914501451145214531454

1455

14561457

1458

145914601461

1462

1463

14641465

1466

1467

1468

14691470

1471

1472

1473

14741475

7172

Page 37: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

The following second-level status codes are referenced at various places in the specification. Additionalsecond-level status codes MAY be defined in future versions of the SAML specification.

RequestVersionTooHighThe SAML responder cannot process the request because the protocol version specified in therequest message is a major upgrade from the highest protocol version supported by the responder.

RequestVersionTooLowThe SAML responder cannot process the request because the protocol version specified in therequest message is too low.

RequestVersionDeprecatedThe SAML responder can not process any requests with the protocol version specified in therequest.

TooManyResponsesThe response message would contain more elements than the SAML responder will return.

RequestDeniedThe SAML responder or SAML authority is able to process the request but has chosen not torespond. This status code MAY be used when there is concern about the security context of therequest message or the sequence of request messages received from a particular requester.

RequestUnsupportedThe SAML responder or SAML authority does not support the request.

ResourceNotRecognizedThe SAML authority does not wish to support resource-specific attribute queries, or the resourcevalue provided in the request message is invalid or unrecognized.

FederationDoesNotExistThe responding provider does not recognize the federated <NameIdentifier> in the request.

UnknownPrincipalThe responding provider does not recognize the principal specified or implied by the request.

NoAuthnContextThe specified authentication context requirements cannot be met by the responder.

InvalidNameIDPolicyThe responding provider does not support the specified name identifier format for the requestedsubject.

NoPassiveIndicates the identity provider cannot authenticate the principal passively, as has been requested.

ProxyCountExceededIndicates that an identity provider cannot authenticate the principal directly and is not permitted toproxy the request further.

NoAvailableIDPUsed by an intermediary to indicate that none of the supported identity provider <Loc> elements inan <IDPList> can be resolved or that none of the supported identity providers are available.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 37 of 90

14761477

1478

14791480

1481

14821483

1484

14851486

1487

1488

1489

149014911492

1493

1494

1495

14961497

1498

1499

1500

1501

1502

1503

1504

15051506

1507

1508

1509

15101511

1512

15131514

7374

Page 38: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

NoSupportedIDPUsed by an intermediary to indicate that none of the identity providers in an <IDPList> aresupported by the intermediary.

SAML system entities are free to define more specific status codes in other namespaces, but MUST NOTdefine additional codes in the SAML assertion or protocol namespace.

The QNames defined as status codes SHOULD be used only in the <StatusCode> element's Valueattribute and have the above semantics only in that context.

The following schema fragment defines the <StatusCode> element and its StatusCodeType complextype:

<element name="StatusCode" type="samlp:StatusCodeType"/><complexType name="StatusCodeType"> <sequence> <element ref="samlp:StatusCode" minOccurs="0"/> </sequence> <attribute name="Value" type="QName" use="required"/></complexType>

3.2.2.3 Element <StatusMessage>

The <StatusMessage> element specifies a message that MAY be returned to an operator:

The following schema fragment defines the <StatusMessage> element:<element name="StatusMessage" type="string"/>

3.2.2.4 Element <StatusDetail>

The <StatusDetail> element MAY be used to specify additional information concerning an errorcondition.

The following schema fragment defines the <StatusDetail> element and its StatusDetailTypecomplex type:

<element name="StatusDetail" type="samlp:StatusDetailType"/><complexType name="StatusDetailType"> <sequence> <any namespace="##any" processContents="lax" minOccurs="0"maxOccurs="unbounded"/> </sequence></complexType>

3.3 Assertion Query and Request Protocol This section defines messages and processing rules for requesting existing assertions by reference orquerying for assertions by subject and statement type.

3.3.1 Element <AssertionIDRequest> If the requester knows the unique identifier of one or more assertions, the <AssertionIDRequest>message can be used to request that the assertion(s) be returned in a <Response> message. The<saml:AssertionIDReference> element is used to specify the assertion(s) to return. See SectionElement <AssertionIDReference> for more information on this element.

The following schema fragment defines the <AssertionIDRequest> element:

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 38 of 90

1515

15161517

15181519

15201521

15221523

1524152515261527152815291530

1531

1532

1533

1534

1535

15361537

15381539

1540154115421543154415451546

1547

15481549

1550

1551155215531554

1555

7576

Page 39: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<element name="AssertionIDRequest" type="samlp:AssertionIDRequestType"/><complexType name="AssertionIDRequestType">

3.3.2 Element <Request>The <Request> element specifies a SAML request. It provides either a query or a request for a specificassertion identified by <AssertionIDReference> or <AssertionArtifact>. It has the complextype RequestType, which extends RequestAbstractType by adding a choice of one of the followingelements:

<Query>An extension point that allows extension schemas to define new types of query.

<SubjectQuery>An extension point that allows extension schemas to define new types of query that specify a singleSAML subject.

<AuthenticationQuery>Makes a query for authentication information.

<AttributeQuery>Makes a query for attribute information.

<AuthorizationDecisionQuery>Makes a query for an authorization decision.

<AssertionIDReference> [One or more]Requests an assertion by reference to the value of its AssertionID attribute.

<AssertionArtifact> [One or more]Requests assertions by supplying an assertion artifact that represents it.

The following schema fragment defines the <Request> element and its RequestType complex type:<element name="Request" type="samlp:RequestType"/><complexType name="RequestType">

<complexContent><extension base="samlp:RequestAbstractType">

<sequenchoice> <element ref="samlp:Query"/> <element ref="samlp:SubjectQuery"/> <element ref="samlp:AuthenticationQuery"/> <element ref="samlp:AttributeQuery"/> <element ref="samlp:AuthorizationDecisionQuery"/>

<element ref="saml:AssertionIDReference"maxOccurs="unbounded"/>

</sequence <element ref="samlp:AssertionArtifact"maxOccurs="unbounded"/> </choice>

</extension></complexContent>

</complexType>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 39 of 90

15561557

1558

1559156015611562

1563

1564

1565

15661567

1568

1569

1570

1571

1572

1573

1574

1575

1576

1577

1578

15791580

1581

158215831584158515861587158815891590159115921593159415951596

7778

Page 40: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

3.3.2.1 Requests for Assertions by Reference

In the context of a <Request> element, the <saml:AssertionIDReference> element is used torequest an assertion by means of its ID. See Section Element <AssertionIDReference> for moreinformation on this element.

3.3.2.2 Element <AssertionArtifact>

The <AssertionArtifact> element is used to specify the assertion artifact that represents anassertion being requested. Its use is governed by the specific profile of SAML that is being used; see theSAML specification for bindings and profiles [SAMLBind] for more information on the use of assertionartifacts in profiles.

The following schema fragment defines the <AssertionArtifact> element:<element name="AssertionArtifact" type="string"/>

3.3.3 QueriesThe following sections define the SAML query request messagesconstructs that contain queryinformation.

3.3.4 Element <Query> The <Query> element is an extension point that allows new SAML queries to be defined. ItsQueryAbstractType is abstract and is thus usable only as the base of a derived type.QueryAbstractType is the base type from which all SAML query elements are derived.

The following schema fragment defines the <Query> element and its QueryAbstractType complex type:<element name="Query" type="samlp:QueryAbstractType"/><complexType name="QueryAbstractType" abstract="true"/>

3.3.4.1 Element <SubjectQuery>

The <SubjectQuery> message element is an extension point that allows new SAML queries to bedefined that specify a single SAML subject. Its SubjectQueryAbstractType complex type is abstract andis thus usable only as the base of a derived type. SubjectQueryAbstractType adds the <Subject>element and an optional SessionIndex attribute to RequestAbstractTypeelement is an extensionpoint that allows new SAML queries that specify a single SAML subject. ItsSubjectQueryAbstractType complex type is abstract and is thus usable only as the base of aderived type. SubjectQueryAbstractType adds the <Subject> element.

SessionIndex [Optional]If present, specifies a filter for possible responses. Such a query asks the question “What assertionscontaining subject statements do you have for this subject within the context of the supplied sessioninformation?”

If the SessionIndex attribute is present in any defined query, at least one element that extendsStatementAbstractType in the set of returned assertions MUST contain an SessionIndex attributethat matches the SessionIndex attribute in the query. It is OPTIONAL for the complete set of all suchmatching assertions to be returned in the response.The following schema fragment defines the <SubjectQuery> element and itsSubjectQueryAbstractType complex type:

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 40 of 90

1597

159815991600

1601

1602160316041605

1606

1607

1608

16091610

1611

161216131614

1615

16161617

1618

1619162016211622162316241625

1626

162716281629

1630163116321633

16341635

7980

Page 41: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<element name="SubjectQuery" type="samlp:SubjectQueryAbstractType"/><complexType name="SubjectQueryAbstractType" abstract="true">

<complexContent><extension base="samlp:RequestQueryAbstractType">

<sequence><element ref="saml:Subject"/>

</sequence> <attribute name="SessionIndex" type="string"use="optional"/>

</extension></complexContent>

</complexType>

3.3.4.2 Element <AuthenticationQuery>

The <AuthenticationQuery> message element is used to make the query “What assertionscontaining authentication statements are available for this subject?” A successful <Response> willcontain one or moreelement is used to make the query “What assertions containing authenticationstatements are available for this subject?” A successful response will be in the form of assertionscontaining authentication statements.

The <AuthenticationQuery> messageelement MUST NOT be used as a request for a newauthentication using credentials provided in the request. <AuthenticationQuery> is a request forstatements about authentication acts that have occurred in a previous interaction between the indicatedsubject and the Authentication Authority.

This element is of type AuthenticationQueryType, which extends SubjectQueryAbstractType with theaddition of the following attribute:

AuthenticationMethod [Optional]If present, specifies a filter for possible responses. Such a query asks the question “What assertionscontaining authentication statements do you have for this subject with the supplied authenticationmethod?”

In response to an authentication query, a SAML authority returns assertions with authenticationstatements as follows:

Rules given in Section Responses to for matching against the <Subject> element of the queryidentify the assertions that may be returned.

If the AuthenticationMethod attribute is present in the query, at least one<AuthenticationStatement> element in the set of returned assertions MUST contain anAuthenticationMethod attribute that matches the AuthenticationMethod attribute inthe query. It is OPTIONAL for the complete set of all such matching assertions to be returned inthe response.

The following schema fragment defines the <AuthenticationQuery> element and itsAuthenticationQueryType complex type:

<element name="AuthenticationQuery" type="samlp:AuthenticationQueryType"/><complexType name="AuthenticationQueryType">

<complexContent><extension base="samlp:SubjectQueryAbstractType">

<attribute name="AuthenticationMethod" type="anyURI"/></extension>

</complexContent></complexType>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 41 of 90

163616371638163916401641164216431644164516461647

1648

16491650165116521653

1654165516561657

16581659

1660

166116621663

16641665

16661667

16681669167016711672

16731674

16751676167716781679168016811682

8182

Page 42: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

3.3.4.3 Element <AttributeQuery>

The <AttributeQuery> element is used to make the query “Return the requested attributes for thissubject.” A successful response will be in the form of assertions containing attribute statements. Thiselement is of type AttributeQueryType, which extends SubjectQueryAbstractType with the addition ofthe following element and attribute:

Resource [Optional]If present, specifies that the attribute query is being made in order to evaluate a specific accessrequest relating to the resource. The SAML authority MAY use the resource attribute to establish thescope of the request. It is permitted for this attribute to have the value of the empty URI reference(""), and the meaning is defined to be "the start of the current document", as specified by [RFC 2396]§4.2.

If the resource attribute is specified and the SAML authority does not wish to support resource-specific attribute queries, or if the resource value provided is invalid or unrecognized, then theAttribute Authority SHOULD respond with a top-level <StatusCode> value of Responder and asecond-level <StatusCode> value of ResourceNotRecognized.

<AttributeDesignator> [Any Number] (see Section Elements <AttributeDesignator> and<Attribute>)

Each <AttributeDesignator> element specifies an attribute whose value is to be returned. If noattributes are specified, it indicates that all attributes allowed by policy are requested.

In response to an attribute query, a SAML authority returns assertions with attribute statements asfollows:

Rules given in Section Responses to for matching against the <Subject> element of the queryidentify the assertions that may be returned.

If any <AttributeDesignator> elements are present in the query, they constrain the attributevalues returned, as noted above.

The SAML authority MAY take the Resource attribute into account in further constraining the valuesreturned, as noted above.

The attribute values returned MAY be constrained by application-specific policy considerations.

The following schema fragment defines the <AttributeQuery> element and its AttributeQueryTypecomplex type:

<element name="AttributeQuery" type="samlp:AttributeQueryType"/><complexType name="AttributeQueryType">

<complexContent><extension base="samlp:SubjectQueryAbstractType">

<sequence><element ref="saml:AttributeDesignator"

minOccurs="0" maxOccurs="unbounded"/></sequence><attribute name="Resource" type="anyURI" use="optional"/>

</extension></complexContent>

</complexType>

3.3.4.4 Element <AuthorizationDecisionQuery>

The <AuthorizationDecisionQuery> element is used to make the query “Should these actions onthis resource be allowed for this subject, given this evidence?” A successful response will be in the form

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 42 of 90

1683

1684168516861687

1688

16891690169116921693

1694169516961697

16981699

17001701

17021703

17041705

17061707

17081709

1710

17111712

171317141715171617171718171917201721172217231724

1725

17261727

8384

Page 43: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

of assertions containing authorization decision statements. This element is of typeAuthorizationDecisionQueryType, which extends SubjectQueryAbstractType with the addition of thefollowing elements and attribute:

Note: The <AuthorizationDecisionQuery> feature has been frozen as of SAMLV2.0, with no future enhancements planned. Users who require additional functionalitymay want to consider the eXtensible Access Control Markup Language [XACML], whichoffers enhanced authorization decision features.

This element is of type AuthorizationDecisionQueryType, which extends SubjectQueryAbstractTypewith the addition of the following elements and attribute:

Resource [Required]A URI reference indicating the resource for which authorization is requested.

<Action> [One or More]The actions for which authorization is requested.

<Evidence> [Optional]A set of assertions that the SAML authority MAY rely on in making its authorization decision.

In response to an authorization decision query, a SAML authority returns assertions with authorizationdecision statements as follows:

Rules given in Section 3.3.4.1Responses to for matching against the <Subject> element of thequery identify the assertions that may be returned.

The following schema fragment defines the <AuthorizationDecisionQuery> element and itsAuthorizationDecisionQueryType complex type:

<element name="AuthorizationDecisionQuery"type="samlp:AuthorizationDecisionQueryType"/><complexType name="AuthorizationDecisionQueryType">

<complexContent><extension base="samlp:SubjectQueryAbstractType">

<sequence><element ref="saml:Action" maxOccurs="unbounded"/><element ref="saml:Evidence" minOccurs="0"/>

</sequence><attribute name="Resource" type="anyURI" use="required"/>

</extension></complexContent>

</complexType>

3.4 ResponsesThe following sections define the SAML constructs that contain response information.

3.4.1 Complex Type ResponseAbstractTypeAll SAML responses are of types that are derived from the abstract ResponseAbstractType complextype. This type defines common attributes and elements that are associated with all SAML responses:

ResponseID [Required]An identifier for the response. It is of type xsd:ID, and MUST follow the requirements specified inSection 1.2.3 for identifier uniqueness.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 43 of 90

172817291730

1731173217331734

17351736

1737

1738

1739

1740

1741

1742

17431744

17451746

17471748

1749175017511752175317541755175617571758175917601761

1762

1763

1764

17651766

1767

17681769

8586

Page 44: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

InResponseTo [Optional]A reference to the identifier of the request to which the response corresponds, if any. If the responseis not generated in response to a request, or if the RequestID attribute value of a request cannot bedetermined (because the request is malformed), then this attribute MUST NOT be present.Otherwise, it MUST be present and its value MUST match the value of the correspondingRequestID attribute value.

MajorVersion [Required]The major version of this response. The identifier for the version of SAML defined in thisspecification is 1. SAML versioning is discussed in Section SAML Versioning.

MinorVersion [Required]The minor version of this response. The identifier for the version of SAML defined in thisspecification is 1. SAML versioning is discussed in Section SAML Versioning.

IssueInstant [Required]The time instant of issue of the response. The time value is encoded in UTC as described in SectionTime Values.

Recipient [Optional]The intended recipient of this response. This is useful to prevent malicious forwarding of responsesto unintended recipients, a protection that is required by some use profiles. It is set by the generatorof the response to a URI reference that identifies the intended recipient. If present, the actualrecipient MUST check that the URI reference identifies the recipient or a resource managed by therecipient. If it does not, the response MUST be discarded.

<ds:Signature> [Optional]An XML Signature that authenticates the response, as described in Section SAML and XMLSignature Syntax and Processing.

The following schema fragment defines the ResponseAbstractType complex type:<complexType name="ResponseAbstractType" abstract="true"> <sequence> <element ref = "ds:Signature" minOccurs="0"/> </sequence> <attribute name="ResponseID" type="ID" use="required"/> <attribute name="InResponseTo" type="NCName" use="optional"/> <attribute name="MajorVersion" type="integer" use="required"/> <attribute name="MinorVersion" type="integer" use="required"/> <attribute name="IssueInstant" type="dateTime" use="required"/> <attribute name="Recipient" type="anyURI" use="optional"/></complexType>

3.4.2 Element <Response>The <Response> message element is used when a response consists of a list of zero or moreassertions that answer the request. It has the complex type ResponseType, which extendsStatusResponseType by adding the following elementelement specifies the status of the correspondingSAML request and a list of zero or more assertions that answer the request. It has the complex typeResponseType, which extends ResponseAbstractType by adding the following elements in order:

<Status> [Required]A code representing the status of the corresponding request.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 44 of 90

1770

17711772177317741775

1776

17771778

1779

17801781

1782

17831784

1785

17861787178817891790

1791

17921793

1794

17951796179717981799180018011802180318041805

1806

18071808180918101811

1812

1813

8788

Page 45: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<Assertion> [Any Number]Specifies an assertion by value. (See Section Element <Assertion> for more information.)

The following schema fragment defines the <Response> element and its ResponseType complex type:<element name="Response" type="samlp:ResponseType"/><complexType name="ResponseType">

<complexContent><extension base="samlp:StatusResponseResponseAbstractType">

<sequence> <element ref="samlp:Status"/>

<element ref="saml:Assertion" minOccurs="0"maxOccurs="unbounded"/>

</sequence></extension>

</complexContent></complexType>

3.4.2.1 Processing Rules

In response to a query message, every assertion returned by a SAML authority MUST contain a<Subject> element that strongly matches the <Subject> element found in the query.

A <Subject> element S1 strongly matches S2 if and only if the following two conditions both apply:

If S2 includes an identifier element (any element whose type is derived from BaseIdentifierAbstractType), then S1 must include an identical identifier element.

If S2 includes one or more <SubjectConfirmation> elements, then S1 must include at least one <SubjectConfirmation> element such that the assertion's subject can be confirmed in themanner described by at least one element in the requested set.

If the SAML authority cannot provide an assertion with any statements satisfying the constraintsexpressed by a query, the <Response> element MUST NOT contain an <Assertion> element andMUST include a <StatusCode> element with value Success. It MAY return a <StatusMessage>element with additional information.

3.5 Authentication Request Protocol When a principal (or an agent acting on the principal's behalf) wishes to obtain assertions containingauthentication statements to establish a security context at one or more relying parties, it can use theauthentication request protocol to send an <AuthnRequest> message to a SAML authority and requestthat it return a <Response> message containing one or more such assertions. A SAML authority thatsupports this protocol is also termed an identity provider. Such assertions MAY contain additionalstatements of any type, but at least one assertion MUST contain at least one authentication statement.

Apart from this requirement, the specific contents of the returned assertions depend on the profile orcontext of use. Also, the exact means by which the principal or agent authenticates to the identityprovider are not specified, though the means of authentication MAY impact the content of the response.Other issues related to the validation of authentication credentials by the identity provider or anycommunication between the identity provider and any other entities involved in the authenticationprocess are also out of scope of this protocol.

The descriptions and processing rules in the following sections reference the following actors, many ofwhom might be the same entity in a particular profile of use:

Reqest IssuerThe entity who creates the authentication request and to whom the response is to be returned.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 45 of 90

1814

1815

1816

181718181819182018211822182318241825182618271828

1829

18301831

1832

18331834

183518361837

1838183918401841

1842

184318441845184618471848

184918501851185218531854

18551856

1857

1858

8990

Page 46: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

PresenterThe entity who presents the request to the authority and either authenticates itself during thesending of the message, or relies on an existing security context to establish its identity. If notthe request issuer, the sender acts as an intermediary between the request issuer and theresponding identity provider.

Requested SubjectThe entity about whom one or more assertions are being requested.

Confirming SubjectThe entity or entities expected to be able to satisfy one of the <SubjectConfirmation>elements of the resulting assertion(s).

Relying PartyThe entity or entities expected to consume the assertion(s) to accomplish a purpose defined bythe profile or context of use, generally to establish a security context.

3.5.1 Element <AuthnRequest> To request that an identity provider issue an authentication assertion, an entity authenticates to it (orrelies on an existing security context) and sends it an <AuthnRequest> message that describes theproperties that the resulting assertion needs to have to satisfy its purpose. Among these properties maybe information that relates to the content of the assertion and/or information that relates to how theresulting <Response> message should be delivered to the request issuer.

The request issuer might not be the same as the presenter of the request, if for example the requestissuer is a relying party that intends to use the resulting assertion to authenticate or authorize therequested subject to provide a service.

The <AuthnRequest> message SHOULD be signed or otherwise authenticated and integrity protectedby the protocol binding used to deliver the message.

This message has the complex type AuthnRequestType, which extends RequestAbstractType andadds the following elements and attributes, all of which are optional in general, but may be required byspecific profiles:

<Subject> [Optional]Specifies the requested subject of the resulting assertion(s). This may include one or more<SubjectConfirmation> elements to indicate how and/or by whom the resulting assertions' canbe confirmed.

If entirely omitted or if no identifier is included, the presenter of the message is presumed to be therequested subject. If no <SubjectConfirmation> elements are included, then the presenter ispresumed to be the only confirming entity required and the method is implied by the profile of useand/or the policies of the identity provider.

<NameIDPolicy> [Optional]Specifies constraints on the name identifier to be used to represent the requested subject. If omitted,then any type of identifier supported by the identity provider for the requested subject can be used,constrained by any relevant deployment-specific policies, with respect to privacy, for example.

<Conditions> [Optional]Specifies the SAML conditions the request issuer expects to govern the validity and/or use of the

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 46 of 90

1859

1860186118621863

1864

1865

1866

18671868

1869

18701871

1872

18731874187518761877

187818791880

18811882

188318841885

1886

188718881889

1890189118921893

1894

189518961897

1898

1899

1900

9192

Page 47: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

resulting assertion(s). The responder MAY modify or supplement this set as it deems necessary.

<RequestAuthnContext> [Optional]Specifies the requirements, if any, that the request issuer places on the authentication context thatapplies to the responding provider's authentication of the presenter.

<Scoping> [Optional]Specifies the identity providers trusted by the request issuer to authenticate the presenter, as well aslimitations and context related to proxying of the <AuthnRequest> message to subsequent identityproviders by the responder.

IsPassive [Optional]A Boolean value. If "true", the identity provider and the user agent itself MUST NOT take control ofthe user interface from the request issuer and interact with the presenter in a noticeable fashion. If avalue is not provided, the default is "true".

ForceAuthn [Optional]A Boolean value. If "true", the identity provider MUST authenticate the presenter directly rather thanrely on a previous security context. If a value is not provided, the default is "false". However, if bothForceAuthn and IsPassive are "true", the identity provider MUST NOT freshly authenticate thepresenter unless the constraints of IsPassive can be met.

ProtocolBinding [Optional]A URI that identifies a SAML protocol binding to be used when returning the <Response> message.

AssertionConsumerServiceID [Optional]References one of a set of <AssertionConsumerService> elements in the request issuer'smetadata as the one to which the <Response> should be returned. It applies only to profiles thatspecify use of this metadata element, in which the request issuer is different than the presenter. Ifomitted, the metadata element labeled with the isDefault attribute MUST be used with suchprofiles.

AssertionConsumerServiceURL [Optional]If the would-be presenter of an <AuthnRequest> recognizes that the issuer's request cannot besatisfied for some reason, this attribute specifies where a <Response> message generated by thatwould-be presenter MUST be returned. This attribute can be required by certain profiles.

ProviderName [Optional]Specifies the human-readable name of the request issuer for use by the presenter's user agent orthe identity provider.

See Section 3.4.1.8 for general processing rules regarding this message.

The following schema fragment defines the <AuthnRequest> element and its AuthnRequestTypecomplex type:

<element name="AuthnRequest" type="samlp:AuthnRequestType"/><complexType name="AuthnRequestType"> <complexContent> <extension base="samlp:RequestAbstractType"> <sequence> <element ref="saml:Subject" minOccurs="0"/> <element ref="samlp:NameIDPolicy" minOccurs="0"/> <elementref="saml:Conditions" minOccurs="0"/> <element ref="samlp:RequestAuthnContext"minOccurs="0"/>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 47 of 90

1901

1902

19031904

1905

190619071908

1909

191019111912

1913

1914191519161917

1918

1919

1920

19211922192319241925

1926

192719281929

1930

19311932

1933

19341935

19361937193819391940194119421943194419451946

9394

Page 48: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<element ref="samlp:Scoping" minOccurs="0"/> </sequence> <attribute name="IsPassive" type="boolean"use="optional"/> <attribute name="ForceAuthn" type="boolean"use="optional"/> <attribute name="ProtocolBinding" type="anyURI"use="optional"/> <attribute name="AssertionConsumerServiceID" type="string"use="optional"/> <attribute name="AssertionConsumerServiceURL"type="anyURI" use="optional"/> <attribute name="ProviderName" type="string"use="optional"/> </extension> </complexContent></complexType>

3.5.1.1 Element <NameIDPolicy>

The <NameIDPolicy> element tailors the name identifier in the subjects of assertions resulting from an<AuthnRequest>. Its NameIDPolicyType complex type defines the following attributes:

Format [Required]Specifies the URI of a name identifier format defined in this or another specification (see Section 7.3for examples).

SPNameQualifier [Optional]Used with a Format of urn:oasis:names:tc:SAML:2.0:nameid-format:federated orurn:oasis:names:tc:SAML:2.0:nameid-format:encrypted, it optionally specifies that afederated identifier be returned (or created) in the namespace of a service provider other than theissuing service provider, or an affiliation group.

When this element is used, if the content is not understood by or acceptable to the identity provider,then a <Response> MUST be returned with a <Status> containing a second-level <StatusCode> ofsamlp:InvalidNameIDPolicy.

A Format of urn:oasis:names:tc:SAML:2.0:nameid-format:federated expresses therequest issuer's willingness, at the discretion of the requested subject, to establish an identity federationfor the subject with the identity provider, if one does not already exist. But note that when<NameIDPolicy> is omitted, the identity provider MAY, at its (and the subject's) discretion, alsoestablish such an identity federation with the understanding that the issuing service provider mightignore the federated and persistent aspect of the identifier.

A Format of urn:oasis:names:tc:SAML:2.0:nameid-format:encrypted indicates that theresulting assertion(s) MUST contain <EncryptedIdentifier> elements instead of plaintext. Theunderlying name identifier's unencrypted form can be of any type supported by the identity provider forthe requested subject.

Any Format value (or the omission of this element) MAY result in an <EncryptedIdentifier> in theresulting assertion(s), if the identity provider's (or the subject's) policies regarding privacy dictate this.

The following schema fragment defines the <NameIDPolicy> element and its NameIDPolicyTypecomplex type:

<element name="NameIDPolicy" type="samlp:NameIDPolicyType"/><complexType name="NameIDPolicyType"> <sequence/> <attribute name="Format" type="anyURI" use="required"/> <attribute name="SPNameQualifier" type="string" use="optional"/>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 48 of 90

19471948194919501951195219531954195519561957195819591960196119621963

1964

19651966

1967

19681969

1970

1971197219731974

197519761977

197819791980198119821983

1984198519861987

19881989

1990199119921993199419951996

9596

Page 49: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

</complexType>

3.5.1.2 Element <RequestAuthnContext>

The <RequestAuthnContext> element specifies the authentication context requirements of therequest issuer with respect to the authentication of the presenter.Its RequestAuthnContextTypecomplex type defines the following elements and attributes:

<AuthnContextClassRef> or <AuthnContextStatementRef> [One or More]Specifies one or more URIs identifying authentication context classes or statements.

Comparison [Optional]Specifies the comparison method used to evaluate the requested context classes or statements, oneof "exact", "minimum", "maximum", or "better". The default is "exact".

If <RequestAuthnContext> is specified in an <AuthnRequest> message, the authenticationstatement in the resulting assertion MUST contain an authentication context that conforms to therequested context as described below.

Either a set of class references or statement references can be used. Additionally, the set of suppliedreferences MUST be evaluated as an ordered set, where the first element is the most preferredauthentication context class or statement. If none of the specified classes or statements can be satisfiedin accordance with the rules below, then the identity provider MUST return a <Response> message witha second-level <StatusCode> of samlp:NoAuthnContext.If Comparison is set to "exact" or omitted, then the resulting authentication context in the authenticationstatement MUST be the exact match of at least one of the authentication contexts specified.

If Comparison is set to "minimum", then the resulting authentication context in the authenticationstatement MUST be at least as strong (as deemed by the identity provider) as one of the authenticationcontexts specified.

If Comparison is set to "better", then the resulting authentication context in the authentication statementMUST be stronger (as deemed by the identity provider) than any one of the authentication contextsspecified.

If Comparison is set to "maximum", then the resulting authentication context in the authenticationstatement MUST be as strong as possible (as deemed by the identity provider) without exceeding thestrength of at least one of the authentication contexts specified.

The following schema fragment defines the <RequestAuthnContext> element and itsRequestAuthnContextType complex type:

<element name="RequestAuthnContext" type="samlp:RequestAuthnContextType"/><complexType name="RequestAuthnContextType"> <choice> <element ref="saml:AuthnContextClassRef" maxOccurs="unbounded"/> <element ref="saml:AuthnContextStatementRef"maxOccurs="unbounded"/> </choice> <attribute name="Comparison" type="samlp:AuthnContextComparisonType"use="optional"/></complexType><simpleType name="AuthnContextComparisonType"> <restriction base="string"> <enumeration value="exact"/> <enumeration value="minimum"/> <enumeration value="maximum"/> <enumeration value="better"/>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 49 of 90

1997

1998

199920002001

2002

2003

2004

20052006

200720082009

20102011201220132014

20152016

201720182019

202020212022

202320242025

20262027

20282029203020312032203320342035203620372038203920402041204220432044

9798

Page 50: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

</restriction></simpleType>

3.5.1.3 Element <Scoping>

The <Scoping> element specifies the identity providers trusted by the request issuer to authenticate thepresenter, as well as limitations and context related to proxying of the <AuthnRequest> message tosubsequent identity providers by the responder. Its ScopingType complex type defines the followingelements and attribute:

<IDPList> [Optional]An advisory list of identity providers and associated information that the request issuer deemsacceptable to respond to the request.

<RequesterID> [Zero or More]Identifies the set requesting entities on whose behalf the request issuer is acting. Used tocommunicate the chain of request issuers when proxying occurs, as described in section 3.4.1.9.

ProxyCount [Optional]Specifies the number of proxying indirections permissible between the identity provider that receivesthis <AuthnRequest> and the identity provider who ultimately authenticates the principal. A countof zero permits no proxying, while omitting this attribute expresses no such restriction.

In profiles specifying an active intermediary, the intermediary MAY examine the list and return a<Response> message with a second-level <StatusCode> of samlp:NoAvailableIDP orsamlp:NoSupportedIDP if it cannot contact or does not support any of the specified identity providers.

The following schema fragment defines the <Scoping> element and its ScopingType complex type:<element name="Scoping" type="samlp:ScopingType"/><complexType name="ScopingType">

3.5.2 Element <Status>The <Status> element contains the following elements:

<StatusCode> [Required]A code representing the status of the corresponding request.

<StatusMessage> [Optional]A message which MAY be returned to an operator.

<StatusDetail> [Optional]Additional information concerning an error condition.

The following schema fragment defines the <Status> element and its StatusType complex type:<element name="Status" type="samlp:StatusType"/><complexType name="StatusType">

<sequence><element ref="samlp:IDPList" minOccurs="0StatusCode"/><element ref="samlp:RequesterID" minOccurs="0"

maxOccurs="unboundedStatusMessage" minOccurs="0"/> <element ref="samlp:StatusDetail" minOccurs="0"/>

</sequence> <attribute name="ProxyCount" type="nonNegativeInteger" use="optional"/>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 50 of 90

20452046

2047

2048204920502051

2052

20532054

2055

20562057

2058

205920602061

206220632064

2065

20662067

2068

2069

2070

2071

2072

2073

2074

2075

2076

20772078

2079

208020812082208320842085

99100

Page 51: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

</complexType><element name="RequesterID" type="anyURI"/Element <StatusCode>

3.5.2.1 Element <IDPList>

The <IDPList> element specifies the identity providers trusted by the request issuer to authenticate thepresenter. Its IDPListType complex type defines the following elements:

<IDPEntry> [One or More]Information about a single identity provider

<GetComplete> [Optional]If the <IDPList> is not complete, this element may specify a URI that resolves to the complete list.

The following schema fragment defines the <IDPList> element and its IDPListType complex type:<element name="IDPList" type="samlp:IDPListType"/><complexType name="IDPListType">

The <StatusCode> element specifies one or more possibly nested, codes representing the status of thecorresponding request. The <StatusCode> element has the following element and attribute:

Value [Required]The status code value. This attribute contains an XML Schema QName; a namespace prefix MUSTbe provided. The value of the topmost <StatusCode> element MUST be from the top-level listprovided in this section.

<StatusCode> [Optional]A subordinate status code that provides more specific information on an error condition.

The top-level <StatusCode> values are QNames associated with the SAML protocol namespace. Thelocal parts of these QNames are as follows:

SuccessThe request succeeded.

VersionMismatchThe SAML responder could not process the request because the version of the request messagewas incorrect.

RequesterThe request could not be performed due to an error on the part of the requester.

ResponderThe request could not be performed due to an error on the part of the SAML responder or SAMLauthority.

The following second-level status codes are referenced at various places in the specification. Additionalsecond-level status codes MAY be defined in future versions of the SAML specification.

RequestVersionTooHighThe SAML responder cannot process the request because the protocol version specified in therequest message is a major upgrade from the highest protocol version supported by the responder.

RequestVersionTooLowThe SAML responder cannot process the request because the protocol version specified in the

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 51 of 90

20862087

2088

20892090

2091

2092

2093

2094

2095

20962097

20982099

2100

210121022103

2104

2105

21062107

2108

2109

2110

21112112

2113

2114

2115

21162117

21182119

2120

21212122

2123

2124

101102

Page 52: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

request message is too low.

RequestVersionDeprecatedThe SAML responder can not process any requests with the protocol version specified in therequest.

TooManyResponsesThe response message would contain more elements than the SAML responder will return.

RequestDeniedThe SAML responder or SAML authority is able to process the request but has chosen not torespond. This status code MAY be used when there is concern about the security context of therequest message or the sequence of request messages received from a particular requester.

ResourceNotRecognizedThe SAML authority does not wish to support resource-specific attribute queries, or the resourcevalue provided in the request message is invalid or unrecognized.

SAML system entities are free to define more specific status codes in other namespaces, but MUST NOTdefine additional codes in the SAML assertion or protocol namespace.

The QNames defined as status codes SHOULD be used only in the <StatusCode> element's Valueattribute and have the above semantics only in that context.

The following schema fragment defines the <StatusCode> element and its StatusCodeType complextype:

<element name="StatusCode" type="samlp:StatusCodeType"/><complexType name="StatusCodeType">

<sequence><element ref="samlp:IDPEntry" maxOccurs="unboundedStatusCode"

minOccurs="0"/> <element ref="samlp:GetComplete" minOccurs="0"/>

</sequence></complexType <attribute name="Value" type="QName" use="required"/><element name="GetComplete" type="anyURI"/>

3.5.2.2 Element <IDPEntry>

The <IDPEntry> element specifies a single identity provider trusted by the request issuer toauthenticate the presenter. Its IDPEntryType complex type defines the following elements:

<ID> [Required]The unique identifier of the identity provider

<Name> [Optional]A human readable name for the identity provider

<Loc> [Optional]The location of a profile-specific endpoint supporting the authentication request protocol. Thebinding to be used must be understood from the profile of use.

The following schema fragment defines the <IDPEntry> element and its IDPEntryType complex type:<element name="IDPEntry" type="samlp:IDPEntryType"/><complexType name="IDPEntryType"> <sequence/> <attribute name="ID" type="anyURI" use="required"/> <attribute name="Name" type="string" use="optional"/>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 52 of 90

2125

2126

21272128

2129

2130

2131

213221332134

2135

21362137

21382139

21402141

21422143

214421452146214721482149215021512152

2153

21542155

2156

2157

2158

2159

2160

21612162

2163

21642165216621672168

103104

Page 53: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<attribute name="Loc" type="anyURI" use="optional"/></complexType>

3.5.2.3 Processing Rules

The <AuthnRequest> and <Response> exchange supports a variety of usage scenarios and istherefore typically profiled for use in a specific context in which this optionality is constrained and specifickinds of input and output are required or prohibited. The following processing rules apply as invariantbehavior across any profile of this protocol exchange.

The recipient MUST validate any signature present on the request or response message. To beconsidered valid, the signature provided MUST be the signature of the <Issuer> contained in themessage.

The responder MUST ultimately reply to an <AuthnRequest> with a <Response> message containingone or more assertions that meet the specifications defined by the request, or a <Status> describingthe error that occurred. The responder MAY conduct additional message exchanges with the requestsender as needed to initiate or complete the authentication process, subject to the nature of the protocolbinding and the authentication mechanism. As described in the next section, this includes proxying therequest by directing the presenter to another identity provider by issuing its own <AuthnRequest>message, so that the resulting assertion can be used to authenticate the presenter to the originalresponder.

If the responder is unable to authenticate the presenter or does not recognize the requested subject, itMUST return a <Response> with a <Status> containing a second-level <StatusCode> ofsamlp:UnknownPrincipal.

If the <Subject> element in the request is present, then the resulting assertions' <Subject> MUSTstrongly match the request <Subject>, as described in section 3.3.4.1, except that the identifier MAYbe in a different form if specified by <NameIDPolicy>.

All of the content defined specifically within <AuthnRequest> is optional, although some may berequired by certain profiles. In the absence of any specific content at all, the following behavior isassumed:

• The assertion(s) returned MUST contain a <Subject> element that represents the presenter. The identifier type and format are determined by the identity provider. At least one statementMUST be an <AuthenticationStatement> that describes the authentication performed by theresponder or authentication service associated with it.

• The request presenter should, to the extent possible, be the only entity able to satisfy the <SubjectConfirmation> of the assertion(s). In the case of weaker confirmation methods,binding-specific or other mechanisms will be used to help satisfy this requirement.

• The resulting assertion(s) MUST contain an <AudienceRestrictionCondition> element referencing the request issuer as an acceptable relying party. Other audiences MAY be includedas deemed appropriate by the identity provider.

3.5.2.4 Proxying

If an identity provider that receives an <AuthnRequest> has not yet authenticated the presenter orcannot directly authenticate him/her, but believes that the presenter has already authenticated to anotheridentity provider, it may respond to the request by issuing a new <AuthnRequest> on its own behalf to

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 53 of 90

21692170

2171

2172217321742175

217621772178

21792180218121822183218421852186

218721882189

219021912192

219321942195

2196219721982199

220022012202

220322042205

2206

2207

220822092210

105106

Page 54: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

be presented to the other identity provider. The original identity provider is termed the proxying identityprovider.

Upon the successful return of a <Response> to the proxying provider, the enclosed assertion MAY beused to authenticate the presenter so that the proxying provider can issue an assertion of its own inresponse to the original <AuthnRequest>, completing the overall message exchange. Both theproxying and authenticating identity providers MAY include constraints on proxying activity in themessages and assertions they issue, as described in previous sections, and below.

The request issuer can influence proxy behavior by including a <Scoping> element where the providersets a desired ProxyCount value and/or indicates a list of preferred identity providers which may beproxied by including an ordered <IDPList> of preferred providers.

An identity provider can control secondary use of its assertions by proxying identity providers using a<ProxyRestrictionCondition> element in the assertions it issues.

3.5.2.4.1 Processing Rules

An identity provider MAY proxy an <AuthnRequest> if the <ProxyCount> attribute is omitted or isgreater than zero. Whether it chooses to proxy or not is a matter of local policy. An identity provider MAYchoose to proxy for a provider specified in the <IDPList>, if provided, but is not required to do so.

An identity provider MUST NOT proxy a request where <ProxyCount> is set to zero. The identityprovider MUST return an error containing a second-level <samlp:StatusCode> value ofsamlp:ProxyCountExceeded, unless it can directly authenticate the presenter.

If it chooses to proxy, when creating the new <AuthnRequest>, an identity provider MUST includeequivalent or stricter forms of all the information included in the original request (such as authenticationcontext policy). Note however that the proxying provider is free to specify whatever <NameIDPolicy> itwishes to maximize the chances of a succesful response.

If the authenticating identity provider is not a SAML identity provider, then the proxying provider MUSThave some other way to ensure that the elements governing user agent interaction (<IsPassive>, forexample) will be honored by the authenticating provider.

The new <AuthnRequest> MUST contain a <ProxyCount> attribute with a value of at most one lessthan the original value. If the original request does not contain a <ProxyCount> attribute, then the newrequest SHOULD contain a <ProxyCount> attribute.

If an <IDPList> was specified in the original request, the new request MUST also contain an<IDPList>. The proxying identity provider MAY add additional identity providers to the end of the<IDPList>, but MUST NOT remove any from the list.

The authentication request and response are processed in normal fashion, in accordance with the rulesgiven in Section 3.4.1.8 and the profile of use. Once the presenter has authenticated to the proxyingidentity provider (by delivering a <Response>), the following steps are followed:

• The proxying identity provider prepares a new assertion on its own behalf by copying in the relevant information from the original assertion. The original assertion will be restricted by<AudienceRestrictionCondition> to (at least) the proxying identity provider, while the newassertion’s condition will reference (at least) the original request issuer.

• The new assertion's <Subject> should contain an identifier that satisfies the original request issuer's preferences, as defined by its <NameIDPolicy> element.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 54 of 90

22112212

22132214221522162217

2218

221922202221

22222223

2224

222522262227

222822292230

2231223222332234

223522362237

223822392240

224122422243

224422452246

2247224822492250

22512252

107108

Page 55: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

• The <AuthenticationStatement> in the new assertion MUST include an <AuthnContext> element containing an <ac:AuthenticatingAuthority> element referencing the identityprovider to which the proxying identity provider referred the presenter. If the original assertioncontains <AuthnContext> information that includes one or more<ac:AuthenticatingAuthority> elements, those elements SHOULD be included in the newassertion, with the new element placed after them.

• If the authenticating identity provider is not a SAML provider, then the proxying identity provider MUST generate a unique identifier value for the authenticating provider. This value SHOULD beconsistent over time across different requests. The value MUST not conflict with values used orgenerated by other SAML providers.

• Any other <AuthnContext> information MAY be copied, translated, or omitted in accordance with the policies of the proxying identity provider, provided that the original requirements dictatedby the request issuer are met.

If, in the future, the identity provider is asked to authenticate the same presenter for a second requestissuer, and this request is equally or less strict than the original request, the identity provider MAY skipthe creation of a new <AuthnRequest> to the authenticating identity provider and immediately issueanother assertion (assuming the original assertion it received is still valid). The concrete definition of"equally or less strict" is up to the proxying identity provider.

3.6 Artifact Protocol The artifact protocol provides a mechanism by which SAML protocol messages can be transported in aSAML binding by reference instead of by value. Both requests and responses can be obtained byreference using this specialized protocol. A message sender, instead of binding a message to a transportprotocol, sends a small piece of data called an artifact using the binding. An artifact can take a variety offorms, but must support a means by which the receiver can determine who sent it. If the receiver wishes,it can then use this protocol in conjunction with a different (generally synchronous) SAML bindingprotocol to dereference the artifact into the original protocol message. The most common use for thismechanism is with bindings that cannot easily carry a message because of size constraints.

Depending on the characteristics of the underlying message being passed by reference, the artifactprotocol MAY require protections such as mutual authentication, integrity protection, confidentiality, etc.from the protocol binding used to dereference the artifact. In all cases, the artifact MUST exhibit a single-use semantic such that once it has been successfully dereferenced, it can no longer be used by anyparty.

Regardless of the protocol message obtained, the result of dereferencing an artifact MUST be treatedexactly as if the message so obtained had been sent originally in place of the artifact.

3.6.1 Element <ArtifactRequest> The <ArtifactRequest> message is used to request that a protocol message be returned in an<ArtifactResponse> message by specifying an artifact that represents the protocol message. Theoriginal transmission of the artifact is governed by the specific binding or profile of SAML that is beingused; see the SAML specifications for bindings [SAMLBind] and profiles [SAMLProf] for more informationon the use of artifacts in bindings and profiles.

The <ArtifactRequest> message SHOULD be signed or otherwise authenticated and integrityprotected by the protocol binding used to deliver the message.

The <Issuer> of the request MUST contain the unique identifier of the requesting provider, with aFormat value of urn:oasis:names:tc:SAML:2.0:nameid-format:provider.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 55 of 90

225322542255225622572258

2259226022612262

226322642265

22662267226822692270

2271

22722273227422752276227722782279

22802281228222832284

22852286

2287

22882289229022912292

22932294

22952296

109110

Page 56: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

This message has the complex type ArtifactRequestType, which extends RequestAbstractType andadds the following element:

<Artifact> [Required]The artifact value that the requester received and now wishes to translate into the protocol messageit represents. See [SAMLBind] for specific artifact format information.

The following schema fragment defines the <ArtifactRequest> element and itsArtifactRequestType complex type:

<element name="ArtifactRequest" type="samlp:ArtifactRequestType"/><complexType name="ArtifactRequestType"> <complexContent> <extension base="samlp:RequestAbstractType"> <sequence> <element ref="samlp:Artifact"/> </sequence> </extension> </complexContent></complexType><element name="Artifact" type="string"/>

3.6.2 Element <ArtifactResponse> The recipient of an <ArtifactRequest> message MUST respond with an <ArtifactResponse>message, which is of complex type ArtifactResponseType, which extends StatusResponseType with asingle optional wildcard element corresponding to the protocol message being returned. This wrappedmessage element can be a request or a response.

The <ArtifactResponse> message SHOULD be signed or otherwise authenticated and integrityprotected by the protocol binding used to deliver the message.

The <Issuer> of the response MUST contain the unique identifier of the responding provider, with aFormat value of urn:oasis:names:tc:SAML:2.0:nameid-format:provider.

The following schema fragment defines the <ArtifactResponse> element and itsArtifactResponseType complex type:

<element name="ArtifactResponse" type="samlp:ArtifactResponseType"/><complexType name="ArtifactResponseType"> <complexContent> <extension base="samlp:StatusResponseType"> <sequence> <any namespace="#any" processContents="lax"minOccurs="0"/> </sequence> </extension> </complexContent></complexType>

3.6.3 Processing Rules The recipient MUST validate any signature present on the request or response message. To beconsidered valid, the signature provided MUST be the signature of the <Issuer> contained in themessage.

If the responder recognizes the artifact as valid, then it responds with the associated protocol messagein an <ArtifactResponse> message. Otherwise, it responds with an <ArtifactResponse>message with no embedded message. In both cases, the <Status> element MUST include a

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 56 of 90

22972298

2299

23002301

23022303

23042305230623072308230923102311231223132314

2315

2316231723182319

23202321

23222323

2324232523262327232823292330233123322333233423352336

2337

233823392340

234123422343

111112

Page 57: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<StatusCode> element with the code value Success. A response message with no embeddedmessage inside it is termed an empty response in the remainder of this section.

The responder MUST enforce a one-time-use property on the artifact by insuring that any subsequentrequest with the same artifact by any requester results in an empty response as described above.

Some SAML protocol messages, most particularly the <AuthnRequest> message in some profiles,MAY be intended for consumption by any party that receives it and can respond appropriately. In mostother cases, however, a message is intended for a specific entity. In such cases, the artifact when issuedMUST be associated with the intended recipient of the message that the artifact represents. If the artifactissuer receives an <ArtifactRequest> from a requester that cannot authenticate itself as the originalintended recipient, then the artifact issuer MUST return an empty response.

The artifact issuer SHOULD enforce the shortest practical time limit on the usability of an artifact, suchthat an acceptable window of time (but no more) exists for the artifact receiver to obtain the artifact andreturn it in an <ArtifactRequest> to the issuer.

Note that the <ArtifactResponse>'s InResponseTo attribute MUST contain the value of thecorresponding <AssertionRequest>'s RequestID attribute, but the embedded protocol message willcontain its own message identifier, and in the case of an embedded response, may contain a differentInResponseTo value that corresponds to the original request message to which the embeddedmessage is responding.

3.7 Federated Name Registration Protocol When an identity provider and service provider first federate a principal's identity using a<NameIdentifier> element with a Format of urn:oasis:names:tc:SAML:2.0:nameid-format:federated, the identity provider generates an opaque value that serves as the initial nameidentifier that both the service provider and the identity provider use in referring to the principal whencommunicating with each other.

Subsequent to federation, the service provider MAY register a different opaque value with the identityprovider. This opaque value is an attribute termed the SPProvidedIdentifier. Until the service providerregisters a different name, this attribute is omitted from <NameIdentifier> elements referring to theprincipal.

Either the service provider or the identity provider MAY register a new name identifier for a principal witheach other at any time following federation. The name identifiers specified by providers SHOULD beunique across the identity providers with which the principal’s identity is federated and SHOULD beunique within the group of name identifiers that have been registered with the identity provider by thisservice provider.

Only federated identifiers (as defined by a Format of urn:oasis:names:tc:SAML:2.0:nameid-format:federated) can be replaced and set with this protocol; non-federated, encrypted, or transientidentifiers MUST NOT be used.

3.7.1 Element <RegisterNameIdentifierRequest> To register an SPProvidedIdentifier attribute with an identity provider, the service provider sends a<RegisterNameIdentifierRequest> message. The same message may be sent by an identityprovider, seeking to change the <NameIdentifier> value stored by the service provider.

The <RegisterNameIdentifierRequest> message SHOULD be signed or otherwise authenticatedand integrity protected by the protocol binding used to deliver the message

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 57 of 90

23442345

23462347

234823492350235123522353

235423552356

23572358235923602361

2362

23632364236523662367

2368236923702371

23722373237423752376

237723782379

2380

238123822383

23842385

113114

Page 58: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

The <Issuer> of the request MUST contain the unique identifier of the requesting provider, with aFormat value of urn:oasis:names:tc:SAML:2.0:nameid-format:provider.

This message has the complex type RegisterNameIdentifierRequestType, which extendsRequestAbstractType and adds the following elements:

<NameIdentifier> [Required]The federated name identifier and associated attributes that specify the principal as currentlyrecognized by the identity and service providers prior to this request.

<NewIdentifier> [Required]The new federated identifier value to be used when communicating with the requesting providerconcerning this principal. If the requester is the service provider, the new identifier will appear insubsequent <NameIdentifier> elements in the SPProvidedIdentifier attribute. If therequester is the identity provider, the new value will appear in subsequent <NameIdentifier>elements as the element's value.

The following schema fragment defines the <RegisterNameIdentifierRequest> element and itsRegisterNameIdentifierRequestType complex type:

<element name="NewIdentifier" type="string"><element name="RegisterNameIdentifierRequest"type="samlp:RegisterNameIdentifierRequestType"/><complexType name="RegisterNameIdentifierRequestType"> <complexContent> <extension base="samlp:RequestAbstractType"> <sequence> <element ref="saml:NameIdentifier"/> <element ref="samlp:NewIdentifier"/> </sequence> </extension> </complexContent></complexType>

3.7.2 Element <RegisterNameIdentifierResponse> The recipient of a <RegisterNameIdentifierRequest> message MUST respond with a<RegisterNameIdentifierResponse> message, which is of type StatusResponseType with noadditional content.

The <RegisterNameIdentifierResponse> message SHOULD be signed or otherwise authenticatedand integrity protected by the protocol binding used to deliver the message.

The <Issuer> of the response MUST contain the unique identifier of the responding provider, with aFormat value of urn:oasis:names:tc:SAML:2.0:nameid-format:provider.

The following schema fragment defines the <RegisterNameIdentifierResponse> element:<element name="RegisterNameIdentifierResponse"type="samlp:StatusResponseType"/>

3.7.3 Processing Rules The recipient MUST validate any signature present on the request or response message. To beconsidered valid, the signature provided MUST be the signature of the <Issuer> contained in themessage.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 58 of 90

23862387

23882389

2390

23912392

2393

23942395239623972398

23992400

2401240224032404240524062407240824092410241124122413

2414

241524162417

24182419

24202421

242224232424

2425

242624272428

115116

Page 59: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

If the request includes a <NameIdentifier> for which no federation exists between the serviceprovider and the identity provider, the responding provider MUST respond with a <Status> containing asecond-level <StatusCode> of samlp:FederationDoesNotExist.

If the service provider requests that its identifier be changed, the identity provider MUST include the<NewIdentifier> element's value as the SPProvidedIdentifier when subsequentlycommunicating to the service provider regarding this principal.

If the identity provider requests that its identifier be changed, the service provider MUST use the<NewIdentifier> element's value as the <NameIdentifier> element value when subsequentlycommunicating with the identity provider regarding this principal.

In either case, the <NameIdentifier> value in the request and its associatedSPProvidedIdentifier attribute MUST contain the most recent name identifier informationestablished between the providers for the principal. The NameQualifier attribute MUST contain theunique identifier of the identity provider. If the principal’s identity federation is between the identityprovider and an affiliation group of which the service provider is a member, then the SPNameQualifierattribute MUST contain the unique identifier of the affiliation group. Otherwise, it MUST contain theunique identifier of the service provider.

Changes to these identifiers may take a potentially significant amount of time to propagate through thesystems at both the requester and the responder. Implementations might wish to allow each party toaccept either identifier for some period of time following the successful completion of a name identifierchange. Not doing so could result in the inability of the principal to access resources.

All other processing rules associated with the underlying request and response messages MUST beobserved.

3.8 Federation Termination Protocol When a principal (or an appropriate agent acting on his or her behalf) terminates an identity federationbetween a service provider and an identity provider through an interaction with the service provider, theservice provider MUST send a <FederationTerminationNotification> message to the identityprovider. The service provider is stating that it will no longer accept authentication assertions from theidentity provider for the specified principal.

Likewise, when a principal terminates an identity federation through an interaction with the identityprovider, the identity provider MUST send a <FederationTerminationNotification> message tothe service provider. In this case, the identity provider is stating that it will no longer provideauthentication assertions to the service provider for the specified principal.

Only federated identifiers (as defined by a Format of urn:oasis:names:tc:SAML:2.0:nameid-format:federated) can be replaced and set with this protocol; non-federated, encrypted, or transientidentifiers MUST NOT be used.

3.8.1 Element <FederationTerminationNotification> A provider sends a <FederationTerminationNotification> to the provider with which it isterminating a federation. The <FederationTerminationNotification> message SHOULD besigned or otherwise authenticated and integrity protected by the protocol binding used to deliver themessage.

The <Issuer> of the request MUST contain the unique identifier of the requesting provider, with aFormat value of urn:oasis:names:tc:SAML:2.0:nameid-format:provider.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 59 of 90

242924302431

243224332434

243524362437

2438243924402441244224432444

2445244624472448

24492450

2451

24522453245424552456

2457245824592460

246124622463

2464

2465246624672468

24692470

117118

Page 60: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

This message has the complex type FederationTerminationNotificationType, which extendsRequestAbstractType and adds the following elements:

<NameIdentifier> [Required]The federated name identifier and associated attributes that specify the principal as currentlyrecognized by the identity and service providers prior to this request. Format MUST beurn:oasis:names:tc:SAML:2.0:nameid-format:federated.

The following schema fragment defines the <RegisterNameIdentifierRequest> element and itsRegisterNameIdentifierRequestType complex type:

<element name="FederationTerminationNotification"type="samlp:FederationTerminationNotificationType"/><complexType name="FederationTerminationNotificationType"> <complexContent> <extension base="samlp:RequestAbstractType"> <sequence> <element ref="saml:NameIdentifier"/> </sequence> </extension> </complexContent></complexType>

3.8.2 Element <FederationTerminationResponse> The recipient of a <FederationTerminationNotification> message MUST respond with a<FederationTerminationResponse> message, which is of type StatusResponseType with noadditional content.

The <FederationTerminationResponse> message SHOULD be signed or otherwise authenticatedand integrity protected by the protocol binding used to deliver the message.

The <Issuer> of the response MUST contain the unique identifier of the responding provider, with aFormat value of urn:oasis:names:tc:SAML:2.0:nameid-format:provider.

The following schema fragment defines the <FederationTerminationResponse> element:<element name="FederationTerminationResponse"type="samlp:StatusResponseType"/>

3.8.3 Processing Rules The recipient MUST validate any signature present on the request or response message. To beconsidered valid, the signature provided MUST be the signature of the <Issuer> contained in themessage.

If the request includes a <NameIdentifier> for which no federation exists between the serviceprovider and the identity provider, the responding provider MUST respond with a <samlp:Status>containing a second-level <samlp:StatusCode> of samlp:FederationDoesNotExist.

Otherwise, the provider MAY perform any maintenance with the knowledge that the federation has beenterminated. A provider MAY choose to invalidate the session of a user for whom federation has beenterminated.

All other processing rules associated with the underlying request and response messages MUST beobserved.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 60 of 90

24712472

2473

247424752476

2477247824792480248124822483248424852486248724882489

2490

249124922493

24942495

24962497

249824992500

2501

250225032504

250525062507

250825092510

25112512

119120

Page 61: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

3.9 Single Logout Protocol The single logout protocol provides a message exchange protocol by which all sessions provided by aparticular session authority are near-simultaneously terminated. The single logout protocol is used eitherwhen a principal logs out at a session participant or when the principal logs out directly at the session authority. This protocol may also be used to logout a principal due to a timeout. The reason forthe logout event may be indicated through the reason attribute.

The principal may have established authenticated sessions both with the session authority, andindividual session participants, based on authentication assertions supplied by the session authority.

When the principal invokes the single logout process at a session participant, the session participantMUST send a <LogoutRequest> message to the session authority that provided the authenticationservice related to that session at the session participant.

When either the principal invokes a logout at the session authority, or a session participant sends alogout request to the session authority specifying that principal, the session authority MUST send a<LogoutRequest> message to each session participant to which it provided authentication assertionsunder its current session with the principal, with the exception of the session participant that sent the<LogoutRequest> message to the session authority.

3.9.1 Element <LogoutRequest> A session participant or session authority sends a <LogoutRequest> message to indicate that asession has been terminated.

The <LogoutRequest> message SHOULD be signed or otherwise authenticated and integrityprotected by the protocol binding used to deliver the message.

This message has the complex type LogoutRequestType, which extends RequestAbstractType, andadds the following elements and attributes:

<NameIdentifier> [Required]

The name identifier and associated attributes that specify the principal as currently recognized bythe identity and service providers prior to this request.

<SessionIndex> [Optional]The identifier that indexes this session at the message recipient.

NotOnOrAfter [Optional]The time at which the request expires.

Reason [Optional]An indication of the reason for the logout.

The following schema fragment defines the <LogoutRequest> element and associatedLogoutRequestType complex type:

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 61 of 90

2513

251425152516251725182519252025212522252325242525252625272528252925302531

2533

25342535

25362537

25382539

2540

25412542

2543

2544

2545

2546

2547

2548

25492550

121122

Page 62: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<element name="LogoutRequest" type="samlp:LogoutRequestType"/> <complexType name="LogoutRequestType"> <complexContent> <extension base="samlp:RequestAbstractType"> <sequence> <element ref="saml:NameIdentifier"/> <element name="SessionIndex" type="string" minOccurs="0"maxOccurs="unbounded"/> </sequence> <attribute name="Reason" type=”string” minOccurs=”0”/> <attribute name="NotOnOrAfter" type="dateTime" minOccurs="0"/> </extension> </complexContent> </complexType>

3.9.2 Element <LogoutResponse> The recipient of a <LogoutRequest> message MUST respond with a <LogoutResponse> message,of type StatusResponseType, with no additional content specified.

The <LogoutResponse> message SHOULD be signed or otherwise authenticated and integrityprotected by the protocol binding used to deliver the message.

The following schema fragment defines the <LogoutResponse> element:<element name="LogoutResponse" type="samlp:StatusResponseType"/>

3.9.3 Processing Rules The <Issuer> of either message in this protocol MUST contain the unique identifier of the requesting orresponding provider, with a Format value of urn:oasis:names:tc:SAML:2.0:nameid-format:provider.

Message recipients MUST validate any signature present on the messages specified in this protocol. Tobe considered valid, the signature provided must be the signature of the <Issuer> contained in themessage.

The message sender MAY use the Reason attribute to indicate the reason for sending the<LogoutRequest>. Other values MAY be agreed upon between participants, but the following valuesare defined directly by this specification for use by all message senders:

urn:oasis:names:tc:SAML:2.0:logout:user Specifies that the message is being sent because the principal wishes to terminate the indicatedsession.

urn:oasis:names:tc:SAML:2.0:logout:adminSpecifies that the message is being sent because an administrator wishes to terminate the indicatedsession for that principal.

All other processing rules associated with the underlying request and response messages MUST beobserved.

3.9.3.1 Session Participant Rules

When a session participant receives a <LogoutRequest>, the session participant MUST authenticatethe message.. If the sender is the authority that provided an assertion linked to the principal's currentsession, the session participant MUST invalidate the principal's session(s) referred to by the<NameIdentifier> element, and any <SessionIndex> elements supplied in the message.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 62 of 90

25512552255325542555255625572558255925602561256225632564

2565

25662567

25682569

2570

2571

2572

257325742575

257625772578

257925802581

2582

25832584

2585

25862587

25882589

2590

2591259225932594

123124

Page 63: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

The session participant MUST apply the logout request message to any assertion that meets thefollowing conditions, even if the assertion arrives after the logout request: • The <SessionIndex> of the assertion's statements matches one specified in the logout request.

• The assertion would otherwise be valid

• The logout request has not yet expired (determined by examining the NotOnOrAfter attribute on the message).

3.9.3.2 Session Authority Rules

When a session authority receives a <LogoutRequest>, the session authority MUST authenticate thesender. If the sender is a session participant to which the session authority provided an assertion for thecurrent session, then the session authority SHOULD do the following:• Send a <LogoutRequest> message to each session participant for which the session authority

provided assertions in the current session, other than the originator of a current<LogoutRequest>.

• Send a <LogoutRequest> message to any session authority on behalf of whom the session authority proxied the user's authentication, unless the second authority is the originator of the<LogoutRequest>.

• Terminate the principal's current session as specified by the <NameIdentifier> element, and any <SessionIndex> elements present in the logout request message.

It should be noted that a session authority MAY initiate a logout for reasons other than having received a<LogoutRequest> from a session participant – these include, but are not limited to:• If some timeout period was agreed out-of-band with an individual session participant, the session

authority MAY send a <LogoutRequest> to that individual participant alone.

• An agreed global timeout period has been exceeded.

• The principal, or some other trusted entity has requested logout of the principal, directly at the session authority.

• The session authority has determined that the principal's credentials may have been compromised.

When constructing a logout request message, the session authority MUST set the value of theNotOnOrAfter attribute of the message to a time value, indicating an expiration time for the message.

In addition to the values specified in section 3.6.3 for the Reason attribute, the following values are alsoavailable for use by the session authority only:

urn:oasis:names:tc:SAML:2.0:logout:global-timeoutSpecifies that the message is being sent because of the global session timeout interval periodbeing exceeded.

urn:oasis:names:tc:SAML:2.0:logout:sp-timeoutSpecifies that the message is being sent because a timeout interval period agreed between aparticipant and the authority has been exceeded.

If an error occurs during this further processing of the logout (for example, relying session participantsmay not all implement the particular single logout protocol binding used by the requesting sessionparticipant), then the session authority MUST respond to the original requester with a<LogoutResponse> message, indicating the status of the logout request. The value

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 63 of 90

259525962597

2598

2599

26002601

2602

260326042605

260626072608

260926102611

26122613

26142615

26162617

2618

26192620

2621

26222623

26242625

2626

26272628

2629

26302631

2632263326342635

125126

Page 64: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

samlp:UnsupportedBinding is provided for a second-level <samlp:StatusCode>, indicating that asession participant should retry the <LogoutRequest> using a different protocol binding.

3.10 Name Identifier Mapping Protocol When an entity that shares an identifier for a principal with an identity provider wishes to obtain a nameidentifier for the same principal in a particular format or federation namespace, it can send a request tothe identity provider using this protocol.

For example, a service provider that wishes to communicate with another service provider with whom itdoes not share an identity federation for the principal can use an identity provider that shares an identityfederation for the principal with both service providers to map from its own federated identifier to a newidentifier, generally encrypted, with which it can communicate with the second service provider.

Regardless of the type of identifier involved, the mapped identifier SHOULD be encrypted into an<EncryptedIdentifier> element unless a specific deployment dictates such protection isunncessary.

3.10.1 Element <NameIdentifierMappingRequest> To request an alternate name identifier for a principal from an identity provider, a requester sends an<NameIdentifierMappingRequest> message. This message has the complex typeNameIdentifierMappingRequestType, which extends RequestAbstractType and adds the followingelement:

<BaseIdentifier> or <NameIdentifier> or <EncryptedIdentifier> [Required]The identifier and associated attributes that specify the principal as currently recognized by therequester and the responder.

<NameIDPolicy>The format and optional name qualifier that describes the requirements for the identifier to bereturned.

The message SHOULD be signed or otherwise authenticated and integrity protected by the protocolbinding used to deliver the message.

The following schema fragment defines the <NameIdentifierMappingRequest> element and itsNameIdentifierMappingRequestType complex type:

<element name="NameIdentifierMappingRequest"type="samlp:NameIdentifierMappingRequestType"/><complexType name="NameIdentifierMappingRequestType"> <complexContent> <extension base="samlp:RequestAbstractType"> <sequence> <choice> <element ref="saml:BaseIdentifier"/> <element ref="saml:NameIdentifier"/> <element ref="saml:EncryptedIdentifier"/> </choice> <element ref="samlp:NameIDPolicy"/> </sequence> </extension> </complexContent></complexType>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 64 of 90

26362637

2638

263926402641

2642264326442645

264626472648

2649

2650265126522653

2654

26552656

2657

26582659

26602661

26622663

2664266526662667266826692670267126722673267426752676267726782679

127128

Page 65: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

3.10.2 Element <NameIdentifierMappingResponsStatusMessage>The recipient of a <NameIdentifierMappingRequest> message MUST respond with a<NameIdentifierMappingResponse> message. This message has the complex typeNameIdentifierMappingRequestType, which extends RequestAbstractType and adds the followingelement<StatusMessage> element specifies a message that MAY be returned to an operator:

<NameIdentifier> or <EncryptedIdentifier> [Required]The identifier and associated attributes that specify the principal in the manner requested, usually inencrypted form.

The message SHOULD be signed or otherwise authenticated and integrity protected by the protocolbinding used to deliver the message.

The <Issuer> of the response MUST contain the unique identifier of the responding provider, with aFormat value of urn:oasis:names:tc:SAML:2.0:nameid-format:provider.

The following schema fragment defines the <NameIdentifierMappingResponse> element and itsNameIdentifierMappingResponseType complex type:

<element name="NameIdentifierMappingResponse"type="samlp:NameIdentifierMappingResponseType"/><complexType name="NameIdentifierMappingResponseType"> <complexContent> <extension base="samlp:StatusResponseType"> <choice> <element ref="saml:NameIdentifier"> <element ref="saml:EncryptedIdentifier"> </choice> </extension> </complexContent>

The following schema fragment defines the <StatusMessage> element and its StatusMessageTypecomplex type:

<element name="StatusMessage" type="string"/>

3.10.2.1 Element <StatusDetail>

The <StatusDetail> element MAY be used to specify additional information concerning an errorcondition.

The following schema fragment defines the <StatusDetail> element and its StatusDetailTypecomplex type:

<element name="StatusDetail" type="samlp:StatusDetailType"/><complexType name="StatusDetailType"> <sequence> <any namespace="##any" processContents="lax" minOccurs="0"maxOccurs="unbounded"/> </sequence></complexType>

3.10.3 Processing Rul Responses to QueriesThe recipient MUST validate any signature present on the request or response message. To beconsidered valid, the signature provided MUST be the signature of the <Issuer> contained in themessage.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 65 of 90

2680

2681268226832684

2685

26862687

26882689

26902691

2692269326942695269626972698269927002701270227032704

27052706

2707

2708

27092710

27112712

2713271427152716271727182719

2720

272127222723

129130

Page 66: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

If the responder does not recognize the principal identified in the request, it MUST respond with a<Status> containing a second-level <StatusCode> of samlp:UnknownPrincipal.

At the responder's discretion, the samlp:InvalidNameIDPolicy status code MAY be returned toindicate an inability or unwillingness to supply an identifier in the requested format. Likewise, thesamlp:FederationDoesNotExist status code MAY be used to indicate that a requested federatedidentifier cannot be returned.

All other processing rules associated with the underlying request and response messages MUST beobserved.

In response to a query, every assertion returned by a SAML authority MUST contain at least onestatement whose <saml:Subject> element strongly matches the <saml:Subject> element found inthe query.

A <saml:Subject> element S1 strongly matches S2 if and only if the following two conditions bothapply:

If S2 includes a <saml:NameIdentifier> element, then S1 must include an identical<saml:NameIdentifier> element.

If S2 includes a <saml:SubjectConfirmation> element, then S1 must include an identical<saml:SubjectConfirmation> element.

If the SAML authority cannot provide an assertion with any statements satisfying the constraintsexpressed by a query, the <Response> element MUST NOT contain an <Assertion> element andMUST include a <StatusCode> element with value Success. It MAY return a <StatusMessage>element with additional information.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 66 of 90

27242725

2726272727282729

27302731

273227332734

27352736

27372738

27392740

2741274227432744

131132

Page 67: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

4 SAML VersioningThe SAML specification set is versioned in two independent ways. Each is discussed in the followingsections, along with processing rules for detecting and handling version differences, when applicable.Also included are guidelines on when and why specific version information is expected to change infuture revisions of the specification.

When version information is expressed as both a Major and Minor version, it may be expresseddiscretely, or in the form Major.Minor. The version number MajorB.MinorB is higher than the versionnumber MajorA.MinorA if and only if:

MajorB > MajorA ( ( MajorB = MajorA ) MinorB > MinorA )

4.1 SAML Specification Set VersionEach release of the SAML specification set will contain a major and minor version designation describingits relationship to earlier and later versions of the specification set. The version will be expressed in thecontent and filenames of published materials, including the specification set document(s), and XMLschema instance(s). There are no normative processing rules surrounding specification set versioning,since it merely encompasses the collective release of normative specification documents whichthemselves contain processing rules.

The overall size and scope of changes to the specification set document(s) will informally dictate whethera set of changes constitutes a major or minor revision. In general, if the specification set is backwardscompatible with an earlier specification set (that is, valid older messages, protocols, and semanticsremain valid), then the new version will be a minor revision. Otherwise, the changes will constitute amajor revision. Note that SAML V1.1 has made one backwards-incompatible change to SAML V1.0,described in Section .

4.1.1 Schema VersionAs a non-normative documentation mechanism, any XML schema instances published as part of thespecification set will contain a schema "version" attribute in the form Major.Minor, reflecting thespecification set version in which it has been published. Validating implementations MAY use theattribute as a means of distinguishing which version of a schema is being used to validate messages, orto support a multiplicity of versions of the same logical schema.

4.1.2 SAML Assertion VersionThe SAML <Assertion> element contains attributes for expressing the major and minor version of theassertion using a pair of integers. Each version of the SAML specification set will be construed so as todocument the syntax, semantics, and processing rules of the assertions of the same version. That is,specification set version 1.0 describes assertion version 1.0, and so on.

There is explicitly NO relationship between the assertion version and the SAML assertion XMLnamespace that contains the schema definitions for that assertion version.

The following processing rules apply:

A SAML authority MUST NOT issue any assertion with an assertion version number not supportedby the authority.

A SAML relying party MUST NOT process any assertion with a major assertion version number notsupported by the relying party.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 67 of 90

2745

2746274727482749

275027512752

2753

2754

275527562757275827592760

276127622763276427652766

2767

27682769277027712772

2773

2774277527762777

27782779

2780

27812782

27832784

133134

Page 68: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

A SAML relying party MAY process or MAY reject an assertion whose minor assertion versionnumber is higher than the minor assertion version number supported by the relying party. However,all assertions that share a major assertion version number MUST share the same general processingrules and semantics, and MAY be treated in a uniform way by an implementation. That is, if a V1.1assertion shares the syntax of a V1.0 assertion, an implementation MAY treat the assertion as a V1.0assertion without ill effect.

4.1.3 SAML Protocol VersionThe SAML protocol <Request> and <Response> elements contain attributes for expressing the majorand minor version of the request or response message using a pair of integers. Each version of theSAML specification set will be construed so as to document the syntax, semantics, and processing rulesof the protocol messages of the same version. That is, specification set version 1.0 describes requestand response version V1.0, and so on.

There is explicitly NO relationship between the protocol version and the SAML protocol XML namespacethat contains the schema definitions for protocol messages for that protocol version.

The version numbers used in SAML protocol <Request> and <Response> elements will be the samefor any particular revision of the SAML specification set.

4.1.3.1 Request Version

The following processing rules apply to requests:

A SAML requester SHOULD issue requests with the highest request version supported by both theSAML requester and the SAML responder.

If the SAML requester does not know the capabilities of the SAML responder, then it should assumethat it supports requests with the highest request version supported by the requester.

A SAML requester MUST NOT issue a request message with a request version number matching aresponse version number that the requester does not support.

A SAML responder MUST reject any request with a major request version number not supported bythe responder.

A SAML responder MAY process or MAY reject any request whose minor request version number ishigher than the highest supported request version that it supports. However, all requests that share amajor request version number MUST share the same general processing rules and semantics, andMAY be treated in a uniform way by an implementation. That is, if a V1.1 request shares the syntaxof a V1.0 request, a responder MAY treat the request message as a V1.0 request without ill effect.

4.1.4 Response VersionThe following processing rules apply to responses:

A SAML responder MUST NOT issue a response message with a response version number higherthan the request version number of the corresponding request message.

A SAML responder MUST NOT issue a response message with a major response version numberlower than the major request version number of the corresponding request message except to reportthe error RequestVersionTooHigh.

An error response resulting from incompatible SAML protocol versions MUST result in reporting a top-level <StatusCode> value of VersionMismatch, and MAY result in reporting one of the following

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 68 of 90

278527862787278827892790

2791

27922793279427952796

27972798

27992800

2801

2802

28032804

28052806

28072808

28092810

28112812281328142815

2816

2817

28182819

282028212822

28232824

135136

Page 69: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

second-level values: RequestVersionTooHigh, RequestVersionTooLow, orRequestVersionDeprecated.

4.1.5 Permissible Version CombinationsIn general, assertions of a particular major version may appear in response messages of the same majorversion, as permitted by the importation of the SAML assertion namespace into the SAML protocolschema. Future versions of this specification are expected to explicitly describe the permittedcombinations across major versions.

Specifically, this permits a V1.1 assertion to appear in a V1.0 response message and a V1.0 assertion toappear in a V1.1 response message.

4.2 SAML Namespace VersionXML schema instances and "qualified names" (QNames) published as part of the specification setcontain one or more target namespaces into which the type, element, and attribute definitions areplaced. Each namespace is distinct from the others, and represents, in shorthand, the structural andsyntactical definitions that make up that part of the specification.

The namespace URIs defined by the specification set will generally contain version information of theform Major.Minor somewhere in the URI. The major and minor version in the URI MUST correspond tothe major and minor version of the specification set in which the namespace is first introduced anddefined. This information is not typically consumed by an XML processor, which treats the namespaceopaquely, but is intended to communicate the relationship between the specification set and thenamespaces it defines.

As a general rule, implementers can expect the namespaces (and the associated schema definitions)defined by a major revision of the specification set to remain valid and stable across minor revisions ofthe specification. New namespaces may be introduced, and when necessary, old namespaces replaced,but this is expected to be rare. In such cases, the older namespaces and their associated definitionsshould be expected to remain valid until a major specification set revision.

4.2.1 Schema EvolutionIn general, maintaining namespace stability while adding or changing the content of a schema arecompeting goals. While certain design strategies can facilitate such changes, it is complex to predict howolder implementations will react to any given change, making forward compatibility difficult to achieve.Nevertheless, the right to make such changes in minor revisions is reserved, in the interest ofnamespace stability. Except in special circumstances (for example to correct major deficiencies or fixerrors), implementations should expect forward compatible schema changes in minor revisions, allowingnew messages to validate against older schemas.

Implementations SHOULD expect and be prepared to deal with new extensions and message types inaccordance with the processing rules laid out for those types. Minor revisions MAY introduce new typesthat leverage the extension facilities described in Section SAML Extensions. Older implementationsSHOULD reject such extensions gracefully when they are encountered in contexts that dictate mandatorysemantics. Examples include new query, statement, or condition types.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 69 of 90

28252826

2827

2828282928302831

28322833

2834

2835283628372838

283928402841284228432844

28452846284728482849

2850

2851285228532854285528562857

28582859286028612862

137138

Page 70: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

5 SAML and XML Signature Syntax and ProcessingSAML assertions and SAML protocol request and response messages may be signed, with the followingbenefits:

An assertion signed by the SAML authority supports:

– Assertion integrity.

– Authentication of the SAML authority to a SAML relying party.

– If the signature is based on the SAML authority’s public-private key pair, then it also provides fornon-repudiation of origin.

A SAML protocol request or response message signed by the message originator supports:

– Message integrity.

– Authentication of message origin to a destination.

– If the signature is based on the originator's public-private key pair, then it also provides for non-repudiation of origin.

A digital signature is not always required in SAML. For example, it may not be required in the followingsituations:

In some circumstances signatures may be “inherited," such as when an unsigned assertion gainsprotection from a signature on the containing protocol response message. "Inherited" signaturesshould be used with care when the contained object (such as the assertion) is intended to have anon-transitory lifetime. The reason is that the entire context must be retained to allow validation,exposing the XML content and adding potentially unnecessary overhead.

The SAML relying party or SAML requester may have obtained an assertion or protocol messagefrom the SAML authority or SAML responder directly (with no intermediaries) through a securechannel, with the SAML authority or SAML responder having authenticated to the relying party orSAML responder by some means other than a digital signature.

Many different techniques are available for "direct" authentication and secure channel establishmentbetween two parties. The list includes TLS/SSL, HMAC, password-based mechanisms, etc. In addition,the applicable security requirements depend on the communicating applications and the nature of theassertion or message transported.

It is recommended that, in all other contexts, digital signatures be used for assertions and request andresponse messages. Specifically:

A SAML assertion obtained by a SAML relying party from an entity other than the SAML authoritySHOULD be signed by the SAML authority.

A SAML protocol message arriving at a destination from an entity other than the originating siteSHOULD be signed by the origin site.

Profiles may specify alternative signature mechanisms such as S/MIME or signed Java objects thatcontain SAML documents. Caveats about retaining context and interoperability apply. XML Signaturesare intended to be the primary SAML signature mechanism, but the specification attempts to ensurecompatibility with profiles that may require other mechanisms.

Unless a profile specifies an alternative signature mechanism, enveloped XML Digital Signatures MUSTbe used if signing.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 70 of 90

2863

28642865

2866

2867

2868

28692870

2871

2872

2873

28742875

28762877

28782879288028812882

2883288428852886

2887288828892890

28912892

28932894

28952896

2897289828992900

29012902

139140

Page 71: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

5.1 Signing AssertionsAll SAML assertions MAY be signed using the XML Signature. This is reflected in the assertion schemaas described in Section Assertions.

5.2 Request/Response SigningAll SAML protocol request and response messages MAY be signed using the XML Signature. This isreflected in the schema as described in Sections Requests and Responses and Responses.

5.3 Signature InheritanceA SAML assertion may be embedded within another SAML element, such as an enclosing <Assertion> or a <Request> or <Response>, which may be signed. When a SAML assertion does not contain a<ds:Signature> element, but is contained in an enclosing SAML element that contains a<ds:Signature> element, and the signature applies to the <Assertion> element and all its children,then the assertion can be considered to inherit the signature from the enclosing element. The resultinginterpretation should be equivalent to the case where the assertion itself was signed with the same keyand signature options.

Many SAML use cases involve SAML XML data enclosed within other protected data structures such assigned SOAP messages, S/MIME packages, and authenticated SSL connections. SAML profiles maydefine additional rules for interpreting SAML elements as inheriting signatures or other authenticationinformation from the surrounding context, but no such inheritance should be inferred unless specificallyidentified by the profile.

5.4 XML Signature ProfileThe XML Signature specification [XMLSig] calls out a general XML syntax for signing data with flexibilityand many choices. This section details the constraints on these facilities so that SAML processors do nothave to deal with the full generality of XML Signature processing. This usage makes specific use of thexsd:ID-typed attributes optionally present on the root elements to which signatures can apply: theAssertionID attribute on <Assertion>, the RequestID attribute on <Request>, and theResponseID attribute on <Response>. These three attributes are collectively referred to in this sectionas the identifier attributes.

5.4.1 Signing Formats and AlgorithmsXML Signature has three ways of relating a signature to a document: enveloping, enveloped, anddetached.

SAML assertions and protocols MUST use enveloped signatures when signing assertions and protocolmessages. SAML processors SHOULD support the use of RSA signing and verification for public keyoperations in accordance with the algorithm identified by http://www.w3.org/2000/09/xmldsig#rsa-sha1.

5.4.2 ReferencesSigned SAML assertions and protocol messages MUST supply a value for the identifier attribute on theroot element (<Assertion>, <Request>, or <Response>). The assertion’s or message's root elementmay or may not be the root element of the actual XML document containing the signed assertion ormessage.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 71 of 90

2903

29042905

2906

29072908

2909

2910291129122913291429152916

29172918291929202921

2922

2923292429252926292729282929

2930

29312932

293329342935

2936

2937293829392940

141142

Page 72: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

Signatures MUST contain a single <ds:Reference> containing a URI reference to the identifierattribute value of the root element of the message being signed. For example, if the attribute value is"foo", then the URI attribute in the <ds:Reference> element MUST be "#foo".

5.4.3 Canonicalization MethodSAML implementations SHOULD use Exclusive Canonicalization , with or without comments, both in the<ds:CanonicalizationMethod> element of <ds:SignedInfo>, and as a <ds:Transform>algorithm. Use of Exclusive Canonicalization ensures that signatures created over SAML messagesembedded in an XML context can be verified independent of that context.

5.4.4 TransformsSignatures in SAML messages SHOULD NOT contain transforms other than the enveloped signaturetransform (with the identifier http://www.w3.org/2000/09/xmldsig#enveloped-signature) or the exclusivecanonicalization transforms (with the identifier http://www.w3.org/2001/10/xml-exc-c14n# orhttp://www.w3.org/2001/10/xml-exc-c14n#WithComments).

Verifiers of signatures MAY reject signatures that contain other transform algorithms as invalid. If they donot, verifiers MUST ensure that no content of the SAML message is excluded from the signature. Thiscan be accomplished by establishing out-of-band agreement as to what transforms are acceptable, or byapplying the transforms manually to the content and reverifying the result as consisting of the sameSAML message.

5.4.5 KeyInfoXML Signature [XMLSig] defines usage of the <ds:KeyInfo> element. SAML does not require theuse of <ds:KeyInfo> nor does it impose any restrictions on its use. Therefore, <ds:KeyInfo> MAYbe absent.

5.4.6 Binding Between Statements in a Multi-Statement AssertionUse of signing does not affect semantics of statements within assertions in any way, as stated in SectionSAML Assertions.

5.4.7 Interoperability with SAML V1.0The use of XML Signature [XMLSig] described above is incompatible with the usage described in theSAML V1.0 specification [SAMLCore1.0]. The original profile was underspecified and was insufficient toensure interoperability. It was constrained by the inability to use URI references to identify the SAMLcontent to be signed. With this limitation removed by the addition of SAML identifier attributes, a decisionhas been made to forgo backwards compatibility with the older specification in this respect.

5.4.8 ExampleFollowing is an example of a signed response containing a signed assertion. Line breaks have beenadded for readability; the signatures are not valid and cannot be successfully verified.<Response IssueInstant="2003-04-17T00:46:02Z" MajorVersion="1" MinorVersion="1" Recipient="www.opensaml.org"

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 72 of 90

294129422943

2944

2945294629472948

2949

2950295129522953

29542955295629572958

2959

296029612962

2963

29642965

2966

29672968296929702971

2972

2973297429752976297729782979

143144

Page 73: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

ResponseID="_c7055387-af61-4fce-8b98-e2927324b306" xmlns="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI="#_c7055387-af61-4fce-8b98-e2927324b306"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><InclusiveNamespaces PrefixList="#default saml samlp ds xsd xsi" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>TCDVSuG6grhyHbzhQFWFzGrxIPE=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>x/GyPbzmFEe85pGD3c1aXG4Vspb9V9jGCjwcRCKrtwPS6vdVNCcY5rHaFPYWkf+5EIYcPzx+pX1h43SmwviCqXRjRtMANWbHLhWAptaK1ywS7gFgsD01qjyen3CP+m3Dw6vKhaqledl0BYyrIzb4KkHO4ahNyBVXbJwqv5pUaE4=</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIICyjCCAjOgAwIBAgICAnUwDQYJKoZIhvcNAQEEBQAwgakxCzAJBgNVBAYTAlVTMRIwEAYDVQQIEwlXaXNjb25zaW4xEDAOBgNVBAcTB01hZGlzb24xIDAeBgNVBAoTF1VuaXZlcnNpdHkgb2YgV2lzY29uc2luMSswKQYDVQQLEyJEaXZpc2lvbiBvZiBJbmZvcm1hdGlvbiBUZWNobm9sb2d5MSUwIwYDVQQDExxIRVBLSSBTZXJ2ZXIgQ0EgLS0gMjAwMjA3MDFBMB4XDTAyMDcyNjA3Mjc1MVoXDTA2MDkwNDA3Mjc1MVowgYsxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhNaWNoaWdhbjESMBAGA1UEBxMJQW5uIEFyYm9yMQ4wDAYDVQQKEwVVQ0FJRDEcMBoGA1UEAxMTc2hpYjEuaW50ZXJuZXQyLmVkdTEnMCUGCSqGSIb3DQEJARYYcm9vdEBzaGliMS5pbnRlcm5ldDIuZWR1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZSAb2sxvhAXnXVIVTx8vuRay+x50z7GJjIHRYQgIv6IqaGG04eTcyVMhoekE0b45QgvBIaOAPSZBl13R6+KYiE7x4XAWIrCP+c2MZVeXeTgV3Yz+USLg2Y1on+Jh4HxwkPFmZBctyXiUr6DxF8rvoP9W7O27rhRjEpmqOIfGTWQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIFoDANBgkqhkiG9w0BAQQFAAOBgQBfDqEW+OI3jqBQHIBzhujN/PizdN7s/z4D5d3pptWDJf2nqgi7lFV6MDkhmTvTqBtjmNk3No7v/dnP6Hr7wHxvCCRwubnmIfZ6QZAv2FU78pLX8I3bsbmRAUg4UP9hH6ABVq4KQKMknxu1xQxLhpR1ylGPdiowMNTrEG8cCx3w/w==</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><Status><StatusCode Value="samlp:Success"/></Status><Assertion AssertionID="_a75adf55-01d7-40cc-929f-dbd8372ebdfc" IssueInstant="2003-04-17T00:46:02Z" Issuer="www.opensaml.org" MajorVersion="1" MinorVersion="1" xmlns="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Conditions NotBefore="2003-04-17T00:46:02Z"

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 73 of 90

2980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046

145146

Page 74: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

NotOnOrAfter="2003-04-17T00:51:02Z"><AudienceRestrictionCondition><Audience>http://www.opensaml.org</Audience></AudienceRestrictionCondition></Conditions><AuthenticationStatement AuthenticationInstant="2003-04-17T00:46:00Z" AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password"><Subject><NameIdentifier Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">[email protected]</NameIdentifier><SubjectConfirmation><ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</ConfirmationMethod></SubjectConfirmation></Subject><SubjectLocality IPAddress="127.0.0.1"/></AuthenticationStatement><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI="#_a75adf55-01d7-40cc-929f-dbd8372ebdfc"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><InclusiveNamespaces PrefixList="#default saml samlp ds xsd xsi" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>Kclet6XcaOgOWXM4gty6/UNdviI=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hq4zk+ZknjggCQgZm7ea8fI79gJEsRy3E8LHDpYXWQIgZpkJN9CMLG8ENR4Nrw+n7iyzixBvKXX8P53BTCT4VghPBWhFYSt9tHWu/AtJfOTh6qaAsNdeCyG86jmtp3TDMWuL/cBUj2OtBZOQMFn7jQ9YB7klIz3RqVL+wNmeWI4=</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIICyjCCAjOgAwIBAgICAnUwDQYJKoZIhvcNAQEEBQAwgakxCzAJBgNVBAYTAlVTMRIwEAYDVQQIEwlXaXNjb25zaW4xEDAOBgNVBAcTB01hZGlzb24xIDAeBgNVBAoTF1VuaXZlcnNpdHkgb2YgV2lzY29uc2luMSswKQYDVQQLEyJEaXZpc2lvbiBvZiBJbmZvcm1hdGlvbiBUZWNobm9sb2d5MSUwIwYDVQQDExxIRVBLSSBTZXJ2ZXIgQ0EgLS0gMjAwMjA3MDFBMB4XDTAyMDcyNjA3Mjc1MVoXDTA2MDkwNDA3Mjc1MVowgYsxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhNaWNoaWdhbjESMBAGA1UEBxMJQW5uIEFyYm9yMQ4wDAYDVQQKEwVVQ0FJRDEcMBoGA1UEAxMTc2hpYjEuaW50ZXJuZXQyLmVkdTEnMCUGCSqGSIb3DQEJARYYcm9vdEBzaGliMS5pbnRlcm5ldDIuZWR1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZSAb2sxvhAXnXVIVTx8vuRay+x50z7GJjIHRYQgIv6IqaGG04eTcyVMhoekE0b45QgvBIaOAPSZBl13R6+KYiE7x4XAWIrCP+c2MZVeXeTgV3Yz+USLg2Y1on+Jh4HxwkPFmZBctyXiUr6DxF8rvoP9W7O27rhRjEpmqOIfGTWQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIFoDANBgkqhkiG9w0BAQQFAAOBgQBfDqEW+OI3jqBQHIBzhujN/PizdN7s/z4D5d3pptWDJf2nqgi7lFV6MDkhmTvTqBtjmNk3No7v/dnP6Hr7wHxvCCRwubnmIfZ6QZAv2FU78pLX8I3bsbmRAUg4UP9hH6ABVq4KQKMknxu1xQxLhpR1ylGPdiowMNTrEG8cCx3w/w==</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></Assertion></Response>

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 74 of 90

304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112

147148

Page 75: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

6 SAML ExtensionsThe SAML schemas support extensibility. An example of an application that extends SAML assertions isthe Liberty Protocols and Schema Specification [LibertyProt]. The following sections explain how to usethe extensibility features in SAML to create extension schemas.

Note that elements in the SAML schemas are blocked from substitution, which means that no SAMLelements can serve as the head element of a substitution group. However, SAML types are not definedas final, so that all SAML types MAY be extended and restricted. The following sections discuss onlyelements and typenot blocked from substitution, so that all SAML elements MAY serve as the headelement of a substitution group. Also, types are not defined as final, so that all SAML types MAY beextended and restricted. The following sections discuss only elements that have been specificallydesigned to support extensibility.

6.1 Assertion Schema ExtensionThe SAML assertion schema is designed to permit separate processing of the assertion package and thestatements it contains, if the extension mechanism is used for either part.

The following elements are intended specifically for use as extension points in an extension schema;their types are set to abstract, and are thus usable only as the base of a derived type:

<Condition> <Statement> <SubjectStatement> The following elements that are directly usable as part of SAML MAY be extended:

<AuthenticationStatement> <AuthorizationDecisionStatement> <AttributeStatement> <AudienceRestrictionCondition>The following elements are defined to allow elements from arbitrary namespaces within them, whichserves as a built-in extension point without requiring an extension schema:

<BaseIdentifier> <SubjectConfirmationData> <AttributeValue> <Advice> <AuthnContext>

6.2 Protocol Schema ExtensionThe following SAML protocol elements are intended specifically for use as extension points in anextension schema; their types are set to abstract, and are thus usable only as the base of a derivedtype:

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 75 of 90

3113

311431153116

3117311831193120312131223123

3124

31253126

31273128

3129

3130

3131

3132

3133

3134

3135

3136

31373138

3139

3140

3141

3142

3143

3144

314531463147

149150

Page 76: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

<Query> <SubjectQuery>The following elements that are directly usable as part of SAML MAY be extended:

<Request> <AuthenticationQuery> <AuthorizationDecisionQuery> <AttributeQuery> <Response>

6.3 Use of Type Derivation and Substitution GroupsW3C XML Schema provides two principal mechanisms for specifying an element of an extended type:type derivation and substitution groups.

For example, a <Statement> element can be assigned the type NewStatementType by means of thexsi:type attribute. For such an element to be schema-valid, NewStatementType needs to be derivedfrom StatementType. The following example of a SAML assertion assumes that the extension schema(represented by the new: prefix) has defined this new type:

<saml:Assertion …> <saml:Statement xsi:type="new:NewStatementType"> … </saml:Statement></saml:Assertion>

Alternatively, the extension schema can define a <NewStatement> element that is a member of asubstitution group that has <Statement> as a head element. For the substituted element to be schema-valid, it needs to have a type that matches or is derived from the head element’s type. The following is anexample of an extension schema fragment that defines this new element:

<xsd:element "NewStatement" type="new:NewStatementType" substitutionGroup="saml:Statement"/>

The substitution group declaration allows the <NewStatement> element to be used anywhere the SAML<Statement> element can be used. The following is an example of a SAML assertion that uses theextension element:

<saml:Assertion …> <new:NewStatement> … </new:NewStatement></saml:Assertion>

The choice of extension method has no effect on the semantics of the XML document but does haveimplications for interoperability.

The advantages of type derivation are as follows:

A document can be more fully interpreted by a parser that does not have access to the extensionschema because a “native” SAML element is available.

At the time of this writing, some W3C XML Schema validators do not support substitution groups,whereas the xsi:type attribute is widely supported.

The advantage of substitution groups is that a document can be explained without the need to explainthe functioning of the xsi:type attribute.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 76 of 90

3148

3149

3150

3151

3152

3153

3154

3155

3156

31573158

3159316031613162

31633164316531663167

316831693170317131723173

31743175317631773178317931803181

31823183

3184

31853186

31873188

31893190

151152

Page 77: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

7 SAML-Defined IdentifiersThe following sections define URI-based identifiers for common authentication methods, resource accessactions, and subject name identifier formats.

Where possible an existing URN is used to specify a protocol. In the case of IETF protocols the URN ofthe most current RFC that specifies the protocol is used. URI references created specifically for SAMLhave one of the following stems:

urn:oasis:names:tc:SAML:1.0:urn:oasis:names:tc:SAML:1.1:

7.1 Authentication Method IdentifiersThe AuthenticationMethod attribute of an <AuthenticationStatement> and the<SubjectConfirmationMethod> element of a SAML subject perform different functions, althoughboth can refer to the same underlying mechanisms. An authentication statement with anAuthenticationMethod attribute describes an authentication act that occurred in the past. TheAuthenticationMethod attribute indicates how that authentication was done. Note that theauthentication statement does not provide the means to perform that authentication, such as a password,key, or certificate.

In contrast, <SubjectConfirmationMethod> is a part of the <SubjectConfirmation> element,which is an optional part of a SAML subject. <SubjectConfirmation> is used to allow the SAMLrelying party to confirm that the request or message came from a system entity that corresponds to thesubject in the statement or query. The <SubjectConfirmationMethod> element indicates the methodthat the relying party can use to do this in the future. This may or may not have any relationship to anauthentication that was performed previously. Unlike the authentication method, the subject confirmationmethod may be accompanied by some piece of information, such as a certificate or key, that will allowthe relying party to perform the necessary check.

Subject confirmation methods are defined in the SAML profiles in which they are used; see the SAMLbindings and profiles specification [SAMLProf] for more information. Additional methods may be addedby defining new profiles or by private agreement.

The following identifiers refer to SAML-specified authentication methods.

7.1.1 PasswordURI: urn:oasis:names:tc:SAML:1.0:am:password

The authentication was performed by means of a password.

7.1.2 Kerberos URI: urn:ietf:rfc:1510

The authentication was performed by means of the Kerberos protocol [RFC 1510], an instantiation of theNeedham-Schroeder symmetric key authentication mechanism [Needham78].

7.1.3 Secure Remote Password (SRP)URI: urn:ietf:rfc:2945

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 77 of 90

3191

31923193

319431953196

31973198

3199

3200320132023203320432053206

32073208320932103211321232133214

321532163217

3218

3219

3220

3221

3222

3223

32243225

3226

3227

153154

Page 78: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

The authentication was performed by means of Secure Remote Password protocol as specified in [RFC2945].

7.1.4 Hardware TokenURI: urn:oasis:names:tc:SAML:1.0:am:HardwareToken

The authentication was performed using some (unspecified) hardware token.

7.1.5 SSL/TLS Certificate Based Client Authentication:URI: urn:ietf:rfc:2246

The authentication was performed using either the SSL or TLS protocol with certificate-based clientauthentication. TLS is described in [RFC 2246].

7.1.6 X.509 Public Key URI: urn:oasis:names:tc:SAML:1.0:am:X509-PKI

The authentication was performed by some (unspecified) mechanism on a key authenticated by meansof an X.509 PKI [X.500][PKIX]. It may have been one of the mechanisms for which a more specificidentifier has been defined below.

7.1.7 PGP Public Key URI: urn:oasis:names:tc:SAML:1.0:am:PGP

The authentication was performed by some (unspecified) mechanism on a key authenticated by meansof a PGP web of trust [PGP]. It may have been one of the mechanisms for which a more specificidentifier has been defined below.

7.1.8 SPKI Public Key URI: urn:oasis:names:tc:SAML:1.0:am:SPKI

The authentication was performed by some (unspecified) mechanism on a key authenticated by meansof a SPKI PKI [SPKI]. It may have been one of the mechanisms for which a more specific identifier hasbeen defined below.

7.1.9 XKMS Public Key URI: urn:oasis:names:tc:SAML:1.0:am:XKMS

The authentication was performed by some (unspecified) mechanism on a key authenticated by meansof a XKMS trust service [XKMS]. It may have been one of the mechanisms for which a more specificidentifier has been defined below.

7.1.10 XML Digital Signature URI: urn:ietf:rfc:3075

The authentication was performed by means of an XML digital signature [RFC 3075].

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 78 of 90

32283229

3230

3231

3232

3233

3234

32353236

3237

3238

323932403241

3242

3243

324432453246

3247

3248

324932503251

3252

3253

325432553256

3257

3258

3259

155156

Page 79: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

7.1.11 Authentication Context URI: urn:oasis:names:tc:SAML:2.0:am:authncontext

The authentication method is described by the proximal <AuthnContext> element.

7.1.12 Unspecified URI: urn:oasis:names:tc:SAML:1.0:am:unspecified

The authentication was performed by an unspecified means.

7.2 Action Namespace IdentifiersThe following identifiers MAY be used in the Namespace attribute of the <Action> element (seeSection Element <Action>) to refer to common sets of actions to perform on resources.

7.2.1 Read/Write/Execute/Delete/ControlURI: urn:oasis:names:tc:SAML:1.0:action:rwedc

Defined actions:

Read Write Execute Delete ControlThese actions are interpreted as follows:

ReadThe subject may read the resource.

WriteThe subject may modify the resource.

ExecuteThe subject may execute the resource.

DeleteThe subject may delete the resource.

ControlThe subject may specify the access control policy for the resource.

7.2.2 Read/Write/Execute/Delete/Control with NegationURI: urn:oasis:names:tc:SAML:1.0:action:rwedc-negation

Defined actions:

Read Write Execute Delete Control ~Read ~Write ~Execute ~Delete ~ControlThe actions specified in Section Read/Write/Execute/Delete/Control are interpreted in the same mannerdescribed there. Actions prefixed with a tilde (~) are negated permissions and are used to affirmativelyspecify that the stated permission is denied. Thus a subject described as being authorized to perform theaction ~Read is affirmatively denied read permission.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 79 of 90

3260

3261

3262

3263

3264

3265

3266

32673268

3269

3270

3271

3272

3273

3274

3275

3276

3277

3278

3279

3280

3281

3282

3283

3284

3285

3286

3287

3288328932903291

157158

Page 80: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

A SAML authority MUST NOT authorize both an action and its negated form.

7.2.3 Get/Head/Put/PostURI: urn:oasis:names:tc:SAML:1.0:action:ghpp

Defined actions:

GET HEAD PUT POSTThese actions bind to the corresponding HTTP operations. For example a subject authorized to performthe GET action on a resource is authorized to retrieve it.

The GET and HEAD actions loosely correspond to the conventional read permission and the PUT andPOST actions to the write permission. The correspondence is not exact however since an HTTP GEToperation may cause data to be modified and a POST operation may cause modification to a resourceother than the one specified in the request. For this reason a separate Action URI reference specifier isprovided.

7.2.4 UNIX File PermissionsURI: urn:oasis:names:tc:SAML:1.0:action:unix

The defined actions are the set of UNIX file access permissions expressed in the numeric (octal)notation.

The action string is a four-digit numeric code:

extended user group world

Where the extended access permission has the value

+2 if sgid is set

+4 if suid is set

The user group and world access permissions have the value

+1 if execute permission is granted

+2 if write permission is granted

+4 if read permission is granted

For example, 0754 denotes the UNIX file access permission: user read, write and execute; group readand execute; and world read.

7.3 NameIdentifier Format IdentifiersThe following identifiers MAY be used in the Format attribute of the <NameIdentifier> element (seeSection Element <NameIdentifier>) to refer to common formats for the content of the<NameIdentifier> element and the associated processing rules, if any.

Note: Several identifiers that were deprecated in V1.1 have been removed for V2.0 ofSAML.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 80 of 90

3292

3293

3294

3295

3296

32973298

32993300330133023303

3304

3305

33063307

3308

3309

3310

3311

3312

3313

3314

3315

3316

33173318

3319

332033213322

33233324

159160

Page 81: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

7.3.1 UnspecifiedURI: urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

The interpretation of the content of the element is left to individual implementations.

7.3.2 Email AddressURI: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

Indicates that the content of the element is in the form of an email address, specifically "addr-spec" asdefined in IETF RFC 2822 [RFC 2822] §3.4.1. An addr-spec has the form local-part@domain. Note thatan addr-spec has no phrase (such as a common name) before it, has no comment (text surrounded inparentheses) after it, and is not surrounded by "<" and ">".

7.3.3 X.509 Subject NameURI: urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName

Indicates that the content of the element is in the form specified for the contents of the<ds:X509SubjectName> element in the XML Signature Recommendation [XMLSig]. Implementorsshould note that the XML Signature specification specifies encoding rules for X.509 subject names thatdiffer from the rules given in IETF RFC 2253 [RFC 2253].

7.3.4 Windows Domain Qualified NameURI: urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName

Indicates that the content of the element is a Windows domain qualified name. A Windows domainqualified user name is a string of the form "DomainName\UserName". The domain name and "\"separator MAY be omitted.

7.3.5 Provider IdentifierURI: urn:oasis:names:tc:SAML:2.0:nameid-format:provider

Indicates that the content of the element is the identifier of a provider of SAML-based services (such as aSAML authority) or a participant in SAML profiles (such as a service provider supporting the browserprofiles). Such an identifier can be used to make assertions about system entities that can issue SAMLrequests, responses, and assertions.

7.3.6 Federated IdentifierURI: urn:oasis:names:tc:SAML:2.0:nameid-format:federated

Indicates that the content of the element is a persistent opaque identifier that corresponds to an identityfederation between an identity provider and a service provider (or affiliation of service providers).Federated name identifiers generated by identity providers MUST be constructed using pseudo-randomvalues that have no discernible correspondence with the subject's actual identifier (for example,username). The intent is to create a non-public pseudonym to prevent the discovery of the subject'sidentity or activities. Federated name identifier values MUST NOT exceed a length of 256 characters.

The element's content MUST contain the most recent identifier of the subject set by the identity provider.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 81 of 90

3325

3326

3327

3328

3329

3330333133323333

3334

3335

3336333733383339

3340

3341

334233433344

3345

3346

3347334833493350

3351

3352

335333543355335633573358

3359

161162

Page 82: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

The element's NameQualifier attribute, if present, MUST contain the name of the identity providerparticipating in the identity federation. It MAY be omitted if the value can be derived from the context ofthe message containing the element, such as the issuer of an assertion.

The element's SPNameQualifier attribute, if present, MUST contain the name of the service provideror affiliation of providers participating in the identity federation. It MAY be omitted if the element iscontained in a message intended only for consumption directly by the service provider, and the valuewould be the name of that service provider.

The element's SPProvidedIdentifier attribute MUST contain the alternative identifier of the subjectmost recently set by the service provider or affiliation, if any. If no such identifier has been established,than the attribute MUST be omitted.

Federated identifiers are intended as a privacy protection; as such they MUST NOT be shared in cleartext with providers other than the providers that have established the identity federation. Furthermore,they MUST NOT appear in log files or similar locations without appropriate controls and protections.Deployments without such requirements are free to use other kinds of identifiers in their SAMLexchanges.

Note also that while federated identifiers are typically used to reflect an account linking relationshipbetween a pair of providers, a service provider is not obligated to recognize or make use of the long termnature of the persistent identifier or establish such a link. Such a "one-sided" identity federation is notdiscernibly different and does not affect the behavior of the identity provider or any processing rulesspecific to federated identifiers in the protocols defined in this specification.

7.3.7 Transient IdentifierURI: urn:oasis:names:tc:SAML:2.0:nameid-format:transient

Indicates that the content of the element is an identifier with transient semantics and SHOULD be treatedas an opaque and temporary value by the relying party. Transient identifier values MUST be generatedin accordance with the rules for SAML identifiers (see Section 1.2.3), and MUST NOT exceed a length of256 characters.

The NameQualifier and SPNameQualifier attributes MAY be used to signify that the identifierrepresents a transient and temporary identity federation, as described in Section Federated Identifier. Insuch a case, they MAY be omitted in accordance with the rules specified in that section.

7.4 Attribute NameFormat Identifiers The following identifiers MAY be used in the NameFormat attribute defined on theAttributeDesignatorType complex type (see Section x) to refer to the classification of the attribute namefor purposes of interpreting the name.

7.4.1 Unspecified URI: urn:oasis:names:tc:SAML:2.0:attname-format:unspecified

The interpretation of the attribute name is left to individual implementations.

7.4.2 URI Reference URI: urn:oasis:names:tc:SAML:2.0:attname-format:uri

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 82 of 90

336033613362

3363336433653366

336733683369

33703371337233733374

33753376337733783379

3380

3381

3382338333843385

338633873388

3389

339033913392

3393

3394

3395

3396

3397

163164

Page 83: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

The attribute name follows the convention for URI references [RFC 2396], for example as used inXACML [XACML] attribute identifiers. The interpretation of the URI content or naming scheme isapplication-specific.

7.5 Attribute ValueType Identifiers The following identifier MAY be used in the ValueType attribute defined on theAttributeDesignatorType complex type (see Section x) to refer to the URI-based datatype of thedesired or supplied attribute.

7.5.1 Application-Specific Value Type URI: urn:oasis:names:tc:SAML:2.0:valuetype-format:appSpecific

Indicates that the datatype of the desired or supplied attribute is application-specific. Note that anyValueType setting (default or explicit) in an attribute query, including this setting, needs to be exactlymatched (in addition to other exact matches) in order for an attribute to be returned.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 83 of 90

339833993400

3401

340234033404

3405

3406

340734083409

3410

165166

Page 84: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

8 ReferencesThe following works are cited in the body of this specification.

8.1 Normative References [Excl-C14N] J. Boyer et al. Exclusive XML Canonicalization Version 1.0. World Wide Web

Consortium, July 2002. http://www.w3.org/TR/xml-exc-c14n/.[Schema1] H. S. Thompson et al. XML Schema Part 1: Structures. World Wide Web

Consortium Recommendation, May 2001. http://www.w3.org/TR/xmlschema-1/.Note that this specification normatively references [Schema2], listed below.

[Schema2] P. V. Biron et al. XML Schema Part 2: Datatypes. World Wide Web ConsortiumRecommendation, May 2001. http://www.w3.org/TR/xmlschema-2/.

[XML] T. Bray, et al. Extensible Markup Language (XML) 1.0 (Second Edition). WorldWide Web Consortium, October 2000. http://www.w3.org/TR/REC-xml.

[XMLEnc] D. Eastlake et al., XML Encryption Syntax and Processing,http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/, World Wide WebConsortium. Note that this specification normatively references [XMLEnc-XSD],listed below.

[XMLEnc-XSD] XML Encryption Schema. World Wide Web Consortium.http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd.

[XMLNS] T. Bray et al., Namespaces in XML. World Wide Web Consortium, 14 January1999. http://www.w3.org/TR/REC-xml-names.

[XMLSig] D. Eastlake et al., XML-Signature Syntax and Processing, World Wide WebConsortium, February 2002. http://www.w3.org/TR/xmldsig-core/. Note that thisspecification normatively references [XMLSig-XSD], listed below.

[XMLSig-XSD] XML Signature Schema. World Wide Web Consortium.http://www.w3.org/TR/2000/CR-xmldsig-core-20001031/xmldsig-core-schema.xsd.

8.2 Non-Normative References [LibertyProt] J. Beatty et al., Liberty Protocols and Schema Specification Version 1.1, Liberty

Alliance Project, January 2003,http://www.projectliberty.org/specs/archive/v1_1/liberty-architecture-protocols-schema-v1.1.pdf.

[Needham78] R. Needham et al. Using Encryption for Authentication in Large Networks ofComputers. Communications of the ACM, Vol. 21 (12), pp. 993-999. December1978.

[PGP] Atkins, D., Stallings, W. and P. Zimmermann..PGP Message Exchange Formats.IETF RFC 1991, August 1996. http://www.ietf.org/rfc/rfc1991.txt.

[PKIX] R. Housley, W. Ford, W. Polk, D. Solo. Internet X.509 Public Key InfrastructureCertificate and CRL Profile. IETF RFC 2459, January 1999.http://www.ietf.org/rfc/rfc2459.txt.

[RFC 1510] J. Kohl, C. Neuman. The Kerberos Network Authentication Requestor (V5).IETF RFC 1510, September 1993. http://www.ietf.org/rfc/rfc1510.txt.

[RFC 2119] S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. IETFRFC 2119, March 1997. http://www.ietf.org/rfc/rfc2119.txt.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 84 of 90

3411

3412

3413

34143415

341634173418

34193420

34213422

3423342434253426

34273428

34293430

343134323433

343434353436

3437

3438343934403441

344234433444

34453446

344734483449

34503451

34523453

167168

Page 85: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

[RFC 2246] T. Dierks, C. Allen. The TLS Protocol Version 1.0. IETF RFC 2246, January1999. http://www.ietf.org/rfc/rfc2246.txt.

[RFC 2253] M. Wahl et al. Lightweight Directory Access Protocol (v3): UTF-8 StringRepresentation of Distinguished Names. IETF RFC 2253, December 1997.http://www.ietf.org/rfc/rfc2253.txt.

[RFC 2396] T. Berners-Lee et al. Uniform Resource Identifiers (URI): Generic Syntax. IETFRFC 2396, August, 1998. http://www.ietf.org/rfc/rfc2396.txt.

[RFC 2630] R. Housley. Cryptographic Message Syntax. IETF RFC 2630, June 1999.http://www.ietf.org/rfc/rfc2630.txt.

[RFC 2822] P. Resnick. Internet Message Format. IETF RFC 2822, April 2001.http://www.ietf.org/rfc/rfc2822.txt.

[RFC 2945] T. Wu. The SRP Authentication and Key Exchange System. IETF RFC 2945,September 2000. http://www.ietf.org/rfc/rfc2945.txt.

[RFC 3075] D. Eastlake, J. Reagle, D. Solo. XML-Signature Syntax and Processing. IETF3075, March 2001. http://www.ietf.org/rfc/rfc3075.txt.

[SAMLBind] E. Maler et al. Bindings for the OASIS Security Assertion Markup Language(SAML). OASIS, September 2003. Document ID oasis-sstc-saml-bindings-2.0and Profiles for the OASIS Security Assertion Markup Language (SAML).OASIS, September 2003. Document ID oasis-sstc-saml-bindings-1.1.http://www.oasis-open.org/committees/security/.

[SAMLProf] E. Maler et al. Profiles for the OASIS Security Assertion Markup Language(SAML). OASIS, September 2003. Document ID oasis-sstc-saml-profiles-2.0.http://www.oasis-open.org/committees/security/.

[SAMLConform] E. Maler et al. Conformance Program Specification for the OASIS SecurityAssertion Markup Language (SAML). OASIS, September 2003. Document IDoasis-sstc-saml-conform-1.1. HYPERLINK "http://www.oasis-open.org/committees/security/"http://www.oasis-open.org/committees/security/.

[SAMLCore1.0] E. Maler et al. Assertions and Protocol for the OASIS Security Assertion MarkupLanguage (SAML). OASIS, November 2002. http://www.oasis-open.org/committees/download.php/1371/oasis-sstc-saml-core-1.0.pdf.

[SAMLGloss] E. Maler et al. Glossary for the OASIS Security Assertion Markup Language(SAML). OASIS, September 2003. Document ID oasis-sstc-saml-glossary-1.1.HYPERLINK "http://www.oasis-open.org/committees/security/"http://www.oasis-open.org/committees/security/.

[SAMLP-XSD] E. Maler et al. SAML protocol schema. OASIS, September 2003. Document IDoasis-sstc-saml-schema-protocol-1.1. HYPERLINK "http://www.oasis-open.org/committees/security/"http://www.oasis-open.org/committees/security/.

[SAMLSecure] E. Maler et al. Security and Privacy Considerations for the OASIS SecurityAssertion Markup Language (SAML). OASIS, September 2003. Document IDoasis-sstc-saml-sec-consider-1.1. HYPERLINK "http://www.oasis-open.org/committees/security/"http://www.oasis-open.org/committees/security/.

[SAML-XSD] E. Maler et al. SAML assertion schema. OASIS, September 2003. Document IDoasis-sstc-saml-schema-assertion-1.1. HYPERLINK "http://www.oasis-open.org/committees/security/"http://www.oasis-open.org/committees/security/.

[Schema1] H. S. Thompson et al. XML Schema Part 1: Structures. World Wide WebConsortium Recommendation, May 2001. http://www.w3.org/TR/xmlschema-1/.

[Schema2] P. V. Biron et al. XML Schema Part 2: Datatypes. World Wide Web ConsortiumRecommendation, May 2001. http://www.w3.org/TR/xmlschema-2/.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 85 of 90

34543455

345634573458

34593460

34613462

34633464

34653466

34673468

34693470347134723473

347434753476

3477347834793480

348134823483

3484348534863487

348834893490

3491349234933494

349534963497

34983499

35003501

169170

Page 86: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

[SPKI] C. Ellison, B. Frantz, B. Lampson, R. Rivest, B. Thomas, T. Ylonen. SPKICertificate Theory. IETF RFC 2693, September 1999.http://www.ietf.org/rfc/rfc2693.txt.

[UNICODE-C] M. Davis, M. J. Dürst. Unicode Normalization Forms. UNICODE Consortium,March 2001. http://www.unicode.org/unicode/reports/tr15/tr15-21.html.

[W3C-CHAR] M. J. Dürst. Requirements for String Identity Matching and String Indexing. WorldWide Web Consortium, July 1998. http://www.w3.org/TR/WD-charreq.

[W3C-CharMod] M. J. Dürst. Character Model for the World Wide Web 1.0. World Wide WebConsortium, April, 2002. http://www.w3.org/TR/charmod/.

[X.500] ITU-T Recommendation X.501: Information Technology - Open SystemsInterconnection - The Directory: Models. 1993.

[XACML] eXtensible Access Control Markup Language (XACML), product of the OASISXACML TC. http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml.

[XKMS] W. Ford, P. Hallam-Baker, B. Fox, B. Dillaway, B. LaMacchia, J. Epstein, J.Lapp. XML Key Management Specification (XKMS). W3C Note 30 March 2001.http://www.w3.org/TR/xkms/.

[XML] T. Bray, et al. Extensible Markup Language (XML) 1.0 (Second Edition). WorldWide Web Consortium, October 2000. http://www.w3.org/TR/REC-xml.

[XMLEnc] D. Eastlake et al., XML Encryption Syntax and Processing,http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/, World Wide WebConsortium.

[XMLEnc-XSD] XML Encryption Schema. World Wide Web Consortium.http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd.

[XMLSig] D. Eastlake et al., XML-Signature Syntax and Processing, World Wide WebConsortium, February 2002. http://www.w3.org/TR/xmldsig-core/.

[XMLSig-XSD] XML Signature Schema. World Wide Web Consortium.http://www.w3.org/TR/2000/CR-xmldsig-core-20001031/xmldsig-core-schema.xsd.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 86 of 90

350235033504

35053506

35073508

35093510

35113512

351335143515

351635173518

35193520

352135223523

35243525

35263527

352835293530

171172

Page 87: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

Appendix A. AcknowledgmentsThe editors would like to acknowledge the contributions of the OASIS Security Services TechnicalCommittee, whose voting members at the time of publication were:

@@

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 87 of 90

3531

35323533

3534

173174

Page 88: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

Appendix B. Revision HistoryRev Date By Whom What

01 20 Oct 2003 Eve Maler Initial draft. Converted to OpenOffice. CORE-1 through CORE-4.Namespaces and schema snippets updated. Non-normativematerial in Chapter 1 removed.

http://www.oasis-open.org/committees/download.php/3936/sstc-saml-core-2.0-draft-01.pdf

02 4 Jan 2004 Eve Maler Implemented Scott Cantor's draft-sstc-nameid-07 solutionproposal (http://www.oasis-open.org/apps/org/workgroup/security/download.php/4587) forwork item W-2, Identity Federation. Some issues remain(substitution group usage; usage of derivation by restriction; thewhole protocol piece hasn't been designed yet).

Fixed CORE-10 (the description of subelement occurrence in the<Evidence> element).

http://www.oasis-open.org/committees/download.php/4866/sstc-saml-core-2.0-draft-02-diff.pdf

03 24 Jan 2004 Scott Cantor Name identifier, issuer, and federation protocol additions/changes.See 03-interim-diff draft for intermediate set of change bars.

http://www.oasis-open.org/committees/download.php/5181/sstc-saml-core-2.0-draft-03-interim-diff.pdfhttp://www.oasis-open.org/committees/download.php/5180/sstc-saml-core-2.0-draft-03-diff.pdf

04 1 Feb 2004 Eve Maler Made minor edits to new and existing material; changed new<AssertionRequest> element name to <AssertionIDRequest>;changed new <AssertionArtifact> and <NewIdentifier> elementdeclarations from local to global; made distinction betweennormative and non-normative references; implemented theblocking of element substitution. The bulk of work item W-2,Identity Federation, is now reflected here. What remains is thefederation termination protocol, plus a few other pieces that arecovered under other work items.

http://www.oasis-open.org/committees/download.php/5232/sstc-saml-core-2.0-draft-04-diff.pdf

05 17 Feb 2004 Scott Cantor,John Kemp, EveMaler

Added FedTerm protocol (W-2), removed NameID date attributes,clarified Name Reg processing rules, added Extensions facilityand Consent attribute. Also moved Signature on assertions to alocation consistent with Request and Response. Added sessionprotocol material (W-1); still unfinished.

http://www.oasis-open.org/committees/download.php/5519/sstc-saml-core-2.0-draft-05-diff.pdf

06 20 Feb 2004 Scott Cantor,John Kemp, EveMaler

Added AssertionURIReference (W-19), a proposal forProxyRestrictionCondition, and a proposal forAuthNRequest/Response (related to many work items). Fleshedout LogoutRequest/Response (W-1). Implemented the freezing ofauthZ decision statement functionality (W-28b).

http://www.oasis-open.org/committees/download.php/5600/sstc-saml-core-2.0-draft-06-diff.pdf

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 88 of 90

3535

175176

Page 89: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

Rev Date By Whom What

07 7 Mar 2004 Scott Cantor, EveMaler

Implemented new arrangement for subject information anddecision on KeyInfo description, as agreed at 2 Mar 2004 telecon.

Adjusted normative language around subject "matching" rulesbased on subject changes.

Revised AuthnRequest proposal based on those changes andfeedback from list and focus calls.

Incorporated additional schema and processing rules related toECP and proxying use cases from ID-FF.

Added AuthnContext to AuthenticationStatement.

Added NameIdentifierMapping protocol (W-2).

00

08 15 Mar 2004 Scott Cantor, EveMaler

Added ArtifactRequest/Response pair as a new protocol.

Implemented proposed W-28a attribute changes (rev 03 of theproposal, reflecting focus group input).

Rev Date By Whom What

01 20 Oct 2003 Eve Maler Initial draft. Converted to OpenOffice. CORE-1 through CORE-4.Namespaces and schema snippets updated. Non-normativematerial in Chapter 1 removed.

02 4 Jan 2004 Eve Maler Implemented Scott Cantor's draft-sstc-nameid-07 solutionproposal (http://www.oasis-open.org/apps/org/workgroup/security/download.php/4587) forwork item W-2, Identity Federation. Some issues remain(substitution group usage; usage of derivation by restriction; thewhole protocol piece hasn't been designed yet).

Fixed CORE-10 (the description of subelement occurrence in the<Evidence> element).

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 89 of 90

3536

177178

Page 90: Assertions and Protocols for the OASIS Security … · Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 Working Draft 08, ... Nokia (john.kemp@nokia.com)

Appendix C. NoticesOASIS takes no position regarding the validity or scope of any intellectual property or other rights thatmight be claimed to pertain to the implementation or use of the technology described in this document orthe extent to which any license under such rights might or might not be available; neither does itrepresent that it has made any effort to identify any such rights. Information on OASIS's procedures withrespect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rightsmade available for publication and any assurances of licenses to be made available, or the result of anattempt made to obtain a general license or permission for the use of such proprietary rights byimplementors or users of this specification, can be obtained from the OASIS Executive Director.

OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications,or other proprietary rights which may cover technology that may be required to implement thisspecification. Please address the information to the OASIS Executive Director.

Copyright © OASIS Open 2004. All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works thatcomment on or otherwise explain it or assist in its implementation may be prepared, copied, publishedand distributed, in whole or in part, without restriction of any kind, provided that the above copyrightnotice and this paragraph are included on all such copies and derivative works. However, this documentitself may not be modified in any way, such as by removing the copyright notice or references to OASIS,except as needed for the purpose of developing OASIS specifications, in which case the procedures forcopyrights defined in the OASIS Intellectual Property Rights document must be followed, or as requiredto translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by OASIS or its successorsor assigns.

This document and the information contained herein is provided on an “AS IS” basis and OASISDISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANYWARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTSOR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULARPURPOSE.

sstc-saml-core-2.0-draft-08 15 March 2004Copyright © OASIS Open 2004. All Rights Reserved Page 90 of 90

3537

35383539354035413542354335443545

354635473548

3549

35503551355235533554355535563557

35583559

35603561356235633564

179180