This document contains an implementation profile for eGovernment use of SAML V2.0, suitable for the purposes of testing conformance of implementations of SAML V2.0. It is not a deployment profile, and does not provide for or reflect specific behavior expected of implementations when used within a particular deployment context.
This document is a transformation of the document from 11 June 2011 into the Asciidoc format. While keeping the requirements as-is, the goal was to change the format to establish a more formally structured baseline for a comparison with the successor of this profile.
The original document is referenced as [eGov] can be downloaded at: http://kantarainitiative.org/confluence/download/attachments/38929505/kantara-report-egov-saml2-profile-2.0.pdf
For license and authors refer to the original document.
Editor of this document format: Rainer Hörbe
1. Introduction
SAML V2.0 is a rich and extensible standard that must be profiled to be used interoperably, and the profiles that typically emerge from the broader standardization process usually remain fairly broad and include a number of options and features that increase the burden for implementers and make deployment-time decisions more difficult. The Kantara Initiative eGovernment Implementation Profile provides a SAML V2.0 conformance specification for Identity Provider and Service Provider implementations operating in eGovernment federations and deployments. The profile is based on the SAML V2.0 specifications created by the Security Services Technical Committee (SSTC) of OASIS, and related specifications approved by that body. It constrains and supplements the base SAML V2.0 features, elements, and attributes required for eGovernment federations and deployments. Implementation profiles define the features that software implementations must support such that deployers can be assured of the ability to meet their own (possibly varied) deployment requirements. Deployment profiles define specific options and constraints to which deployments are required to conform; they guide product configuration and federation operations, and provide criteria against which actual deployments may be tested. This document does not include a deployment profile, but reflects the features deemed necessary or desirable from software implementations in support of a variety of deployment profiles planned and in use. This includes requirements deemed useful to further the eventual goal of interfederation between deployments. === Notation This specification uses normative text to describe the use of SAML capabilities. The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this specification are to be interpreted as described in [RFC2119]
Conventional XML namespace prefixes are used throughout the listings in this specification to stand for their respective namespaces as follows, whether or not a namespace declaration is present in the example:
-
The prefix saml2: stands for the SAML 2.0 assertion namespace, urn:oasis:names:tc:SAML:2.0:assertion
-
The prefix saml2p: stands for the SAML 2.0 protocol namespace, urn:oasis:names:tc:SAML:2.0:protocol
-
The prefix md: stands for the SAML 2.0 metadata namespace, urn:oasis:names:tc:SAML:2.0:metadata
-
The prefix idpdisc: stands for the Identity Provider Discovery Service Protocol and Profile [IdPDisco] namespace, urn:oasis:names:tc:SAML:profiles:SSO:idp-discovery-protocol
-
The prefix mdattr: stands for the Metadata Extension for Entity Attributes Version 1.0 [MetaAttr] namespace, urn:oasis:names:tc:SAML:metadata:attribute
This specification uses the following typographical conventions in text: <ns:Element>
, Attribute
, Datatype, OtherCode
.
Requirements are written in a terse table format with identifiers for better reference. Traceability to the previous format is provided by the "source" attribute with the format "document/line number(s)", with document being "eGov" for [eGov], and "InC Draft" for InCommon DRAFT SAML Implementation Profile. === Changes since [eGov] from 11 June 2010
Requirements are enumerated and have been changed to be context free, i.e. references like "as above" have been replaced by the referenced text.
2. SAML V2.0 Implementation Profile
2.1. Required Information
Identification of the original document: http://kantarainitiative.org/eGov/profiles/SAML2.0/v2.0
Contact information: http://kantarainitiative.org/confluence/display/eGov/Home
Updates: Liberty Alliance eGov Profile for SAML 2.0 [eGov15]
2.2. Metadata and Trust Management
2.2.1. Metadata Profiles
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGov-001 |
MUST |
MUST |
161 |
Support the SAML V2.0 Metadata Interoperability Profile Version 1.0 [SAML2MDIOP]. |
eGov-002 |
MUST |
MUST |
165 |
Support the <ds:X509Certificate> element as key representation int the <md:KeyDescriptor> element |
eGov-003 |
MAY |
MAY |
166 |
Support for other key representations than <ds:X509Certificate>, and for other mechanisms for credential distribution |
eGov-004 |
MUST |
MUST |
168 |
Support some form of path validation of signing, TLS, and encryption credentials used to secure SAML exchanges against one or more trusted certificate authorities. |
eGov-005 |
SHOULD |
SHOULD |
170 |
Support for PKIX [RFC5280]. Implementations SHOULD document the behavior of the validation mechanisms they employ, particular with respect to limitations or divergence from PKIX [RFC5280] |
eGov-006 |
MUST |
MUST |
175 |
Support the use of OCSP [RFC2560] and Certificate Revocation Lists (CRLs) obtained via the 'CRL Distribution Point' X.509 extension [RFC5280] for revocation checking of those credentials. |
eGov-007 |
MAY |
MAY |
177 |
Support additional constraints on the contents of certificates used by particular entities, such as 'subjectAltName' or 'DN', key usage constraints, or policy extensions. Implementations SHOULD document such features and make them optional to enable where possible. |
eGov-008 |
SHOULD |
SHOULD |
184 |
Support the SAML V2.0 Metadata Extension for Entity Attributes Version 1.0 [MetaAttr] and provide policy controls on the basis of SAML attributes supplied via this extension mechanism. |
2.2.2. Metadata Exchange
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGov-010 |
MAY |
MAY |
188 |
Support the generation or exportation of metadata. |
eGov-011 |
MUST |
MUST |
189 |
Support the publication of metadata using the Well-Known-Location method defined in section 4.1 of [SAML2Meta] (under the assumption that entityID values used are suitable for such support). |
eGov-012 |
MUST |
MUST |
194 |
Support the importation of metadata from a local file. |
eGov-013 |
MUST |
MUST |
195 |
Support the importation of metadata from a remote resource at fixed location accessible via HTTP 1.1 or HTTP 1.1 over TLS/SSL. Implementations MUST support use of the 'ETag' and 'Last-Modified' headers for cache management. |
eGov-014 |
SHOULD |
SHOULD |
198 |
Support the use of more than one fixed location for the importation of metadata, but MAY leave their behavior unspecified if a single entity’s metadata is present in more than one source. |
eGov-015 |
MUST |
MUST |
201 |
Support importation of multiple entities' metadata contained within an <md:EntitiesDescriptor> element. |
eGov-016 |
SHOULD |
SHOULD |
203 |
Allow for the automated updating/reimportation of metadata without service degradation or interruption. |
eGov-017 |
MUST |
MUST |
206 |
Verification of metadata, if supported, MUST include XML signature verification at least at the root element level |
eGov-018 |
SHOULD |
SHOULD |
209 |
Verification of metadata SHOULD support direct comparison against known keys as mechanism for signature key trust establishment. |
eGov-019 |
SHOULD |
SHOULD |
210 |
Verification of metadata SHOULD support some form of path-based certificate validation against one or more trusted certificate authorities, along with certificate revocation lists and/or OCSP [RFC2560]. Support for PKIX [RFC5280] is RECOMMENDED. Implementations SHOULD document the behavior of the validation mechanisms they employ, particular with respect to limitations or divergence from PKIX [RFC5280]. |
2.3. Name Identifier Formats
In conjunction with their support of the SAML V2.0 profiles referenced by subsequent sections, Identity Provider and Service Provider implementations MUST support the following SAML V2.0 name identifier formats, in accordance with the normative obligations associated with them by [SAML2Core]:
RequID | IDP | SP | Line | Format Identifier |
---|---|---|---|---|
eGov-021 |
MUST |
MUST |
221 |
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent (see [SAML2Core] sect. 8.3) |
eGov-022 |
MUST |
MUST |
222 |
urn:oasis:names:tc:SAML:2.0:nameid-format:transient (see [SAML2Core] sect. 8.3) |
2.4. Attribute Name Formats
In conjunction with their support of the SAML V2.0 profiles referenced by subsequent sections, Identity Provider and Service Provider implementations MUST support the generation and consumption of <saml2:Attribute> elements that conform to the SAML V2.0 X.500/LDAP Attribute Profile [SAML-X500]. The ability to support <saml2:AttributeValue> elements whose values are not simple strings (e.g., <saml2:NameID>, or other XML values) is OPTIONAL. Such content could be base64-encoded as an alternative.
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGov-030 |
MUST |
MUST |
225 |
Support attribute name format urn:oasis:names:tc:SAML:2.0:attrname-format:uri (see [SAML-X500] sect. 2.3) |
eGov-031 |
MUST |
MUST |
231 |
Support xs:string as attribute values; other types are optional (see [SAML2Core] sect. 2.7.3.1.1) |
2.5. Browser Single Sign-On
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGov-032 |
MUST |
MUST |
233 |
Support the implementation profile of the SAML V2.0 Web Browser SSO Profile [SAML2Prof]. |
2.5.1. Identity Provider Discovery
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGov-033 |
MUST |
MUST |
227 |
Support the Identity Provider Discovery Service Protocol Profile in conformance with section 2.4.1 of [IdPDisco]. |
2.5.2. Authentication Requests
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGov-040 |
MUST |
MUST |
241 |
Support the use of the HTTP-Redirect binding [SAML2Bind] for the transmission of <saml2p:AuthnRequest> messages, including the generation or verification of signatures in conjunction with this binding. |
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGov-041 |
MUST |
247 |
Support the inclusion of at least the following <saml2p:AuthnRequest> child elements and attributes (when appropriate).
|
|
eGov-042 |
MUST |
257 |
Support all <saml2p:AuthnRequest> child elements and attributes defined by [SAML2Core], but MAY provide that support in the form of returning appropriate errors when confronted by particular request options. |
|
eGov-043 |
MUST |
262 |
MUST support any allowable content of the <saml2p:RequestedAuthnContext> element but MAY limit their support of the element to the value "exact" for the Comparison attribute. |
|
eGov-044 |
MUST |
260 |
MUST fully support the options enumerated in [eGov-041], and be configurable to utilize those options in a useful manner as defined by [SAML2Core]. |
|
eGov-045 |
MUST |
266 |
MUST support verification of requested AssertionConsumerServiceURL locations via comparison to <md:AssertionConsumerService> elements supplied via metadata using case-sensitive string comparison. It is OPTIONAL to support other means of comparison (e.g., canonicalization or other manipulation of URL values) or alternative verification mechanisms. |
2.5.3. Responses
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGov-050 |
MUST |
MUST |
274 |
Support the use of the HTTP-POST and HTTP-Artifact bindings [SAML2Bind] for the transmission of <saml2p:Response> messages. |
eGov-051 |
MAY |
MAY |
277 |
Support for other bindings, and for artifact types other than urn:oasis:names:tc:SAML:2.0:artifact-04 |
eGov-052 |
MUST |
MUST |
279 |
Support the generation and consumption of unsolicited <saml2p:Response> messages (i.e., responses that are not the result of a <saml2p:AuthnRequest> message). (see [SAML2Prof] sect. 4.1.5) |
eGov-053 |
MUST |
282 |
Support the issuance of <saml2p:Response> messages (with appropriate status codes) in the event of an error condition, provided that the user agent remains available and an acceptable location to which to deliver the response is available. The criteria for "acceptability" of a response location are not formally specified, but are subject to Identity Provider policy and reflect its responsibility to protect users from being sent to untrusted or possibly malicious parties. Note that this is a stronger requirement than the comparable language in [SAML2Prof]. |
|
eGov-054 |
MUST |
MUST |
290 |
Support the signing of <saml2:Assertion> elements in responses; support for signing of the <saml2p:Response> element is OPTIONAL. |
eGov-055 |
MUST |
MUST |
293 |
Support the use of XML Encryption via the <saml2:EncryptedAssertion> element when using the HTTP-POST binding; support for the <saml2:EncryptedID> and <saml2:EncryptedAttribute> elements is OPTIONAL. |
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGov-061 |
MUST |
299 |
Allow the number of |
|
eGov-062 |
MAY |
302 |
Limit support to a single instance of |
|
eGov-063 |
MUST |
304 |
Support the inclusion of a |
|
eGov-064 |
MUST |
305 |
Support the inclusion of a |
|
eGov-065 |
MUST |
307 |
Implementations that provide some form of session semantics MUST support the |
|
eGov-066 |
MUST |
310 |
Support the acceptance/rejection of assertions based on the content of the |
|
eGov-067 |
MUST |
312 |
Support the acceptance/rejection of particular |
|
eGov-068 |
SHOULD |
314 |
Support support the acceptance/rejection of particular <saml2:AuthnContext> content based on SAML V2.0 metadata as specified in [IAP] |
2.5.4. Artifact Resolution
Implementations MUST support the SAML V2.0 Artifact Resolution profile [SAML2Prof] as constrained by the following requirements.
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGov-070 |
MUST |
MUST |
323 |
Support the use of the SAML SOAP (using HTTP as a transport) binding [SAML2Bind] for the transmission of <saml2p:ArtifactResolve> messages. |
eGov-071 |
MUST |
MUST |
326 |
Support the use of SAML message signatures and TLS server authentication to authenticate artifact resolution requests |
eGov-072 |
MUST |
MUST |
330 |
Support the use of the SAML SOAP (using HTTP as a transport) binding [SAML2Bind] for the transmission of <saml2p:ArtifactResponse> messages. |
eGov-073 |
MUST |
MUST |
333 |
Support the use of SAML message signatures and TLS server authentication to authenticate artifact resolution responses |
2.6. Browser Holder of Key Single Sign-On
This section defines an implementation profile of the SAML V2.0 Holder-of-Key Web Browser SSO Profile Version 1.0 [HoKSSO].
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGov-074 |
MAY |
MAY |
337 |
Support this implementation profile of the SAML V2.0 Holder-of-Key Web Browser SSO Profile Version 1.0 [HoKSSO]. The implementation requirements defined in section "Browser Single Sign-On" for the non-holder-of-key profile apply to implementations of this profile. |
2.7. SAML 2.0 Proxying
Section 3.4.1.5 of [SAML2Core] defines a formalized approach to proxying the SAML 2.0 Authentication Request protocol between multiple Identity Providers. This section defines an implementation profile for this behavior suitable for composition with the Single Sign-On profiles defined in sections 2.5 and 2.6. The requirements of the profile are imposed on Identity Provider implementations acting as a proxy.
RequID | IDP | SP | Source | Format Identifier |
---|---|---|---|---|
eGov-081 |
MUST |
MUST |
350 |
(If acting as a proxy) support the technical requirements outlined in section 3.4.1.5.1 of [SAML2Core] |
eGov-082 |
MUST |
MUST |
350 |
(When processing Authentication Requests) support the mapping of incoming to outgoing |
eGov-083 |
MUST |
MUST |
354 |
(When processing Authentication Requests) support the suppression/eliding of |
eGov-084 |
MUST |
MUST |
359 |
(When processing WebSSO Response) support the mapping of incoming to outgoing |
eGov-085 |
MUST |
MUST |
362 |
(When processing WebSSO Response) support the suppression of |
2.8. Single Logout
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGOV-090 |
MUST |
MUST |
367 |
This section defines an implementation profile of the SAML V2.0 Single Logout Profile [SAML2Prof]. |
For clarification, the technical requirements for each message type below reflect the intent to normatively require initiation of logout by a Service Provider using either the front- or back-channel, and initiation/propagation of logout by an Identity Provider using the back-channel.
2.8.1. Logout Requests
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGOV-091 |
MUST |
375 |
Support the SAML SOAP (using HTTP as a transport) binding [SAML2Bind] for the issuance of <saml2p:LogoutRequest> messages. |
|
eGOV-092 |
MUST |
377 |
Support the SAML SOAP (using HTTP as a transport) and HTTP-Redirect bindings [SAML2Bind] for the reception of <saml2p:LogoutRequest> messages. |
|
eGOV-093 |
MUST |
380 |
Support the SAML SOAP (using HTTP as a transport) binding [SAML2Bind] for both issuance and reception of <saml2p:LogoutRequest> messages. |
|
eGOV-094 |
MUST |
MUST |
384 |
Support the use of SAML message signatures and TLS server authentication to authenticate <saml2p:LogoutRequest> messages. |
eGOV-095 |
MUST |
MUST |
388 |
Support the use of XML Encryption via the <saml2:EncryptedID> element when using the HTTP-Redirect binding. |
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGOV-096 |
MUST |
392 |
Support both user-initiated termination of the local session only and user-initiated Single Logout. |
|
eGOV-097 |
MUST |
393 |
Upon receipt of a <saml2p:LogoutRequest> message via a front-channel binding, support user intervention governing the choice of propagating logout to other Service Providers, or limiting the operation to the Identity Provider. |
|
eGOV-098 |
MUST |
393 |
Return status information to the requesting entity (e.g. partial logout indication) as appropriate when using front-channel binding. |
|
eGOV-099 |
MUST |
399 |
Support both user-initiated termination of the local session only and user-initiated Single Logout. |
|
eGOV-100 |
MUST |
399 |
Support the administrative initiation of Single Logout for any active session, subject to appropriate policy. |
2.8.2. Logout Responses
RequID | IDP | SP | Line | Requirement |
---|---|---|---|---|
eGOV-101 |
MUST |
405 |
Support the SAML SOAP (using HTTP as a transport) and HTTP-Redirect bindings [SAML2Bind] for the issuance of <saml2p:LogoutResponse> messages. |
|
eGOV-102 |
MUST |
407 |
Support the SAML SOAP (using HTTP as a transport) binding [SAML2Bind] for the reception of <saml2p:LogoutResponse> messages. |
|
eGOV-103 |
MUST |
414 |
Support the use of SAML message signatures and TLS server authentication to authenticate <saml2p:LogoutResponse> messages. |
3. Conformance Classes
3.1. Standard
Conforming Identity Provider and/or Service Provider implementations MUST support the normative requirements in sections 2.2, 2.3, 2.4, and 2.5.
3.1.1. Signature and Encryption Algorithms
RequID | Line | Requirement |
---|---|---|
eGov-110 |
426 |
MUST support |
eGov-111 |
428 |
MUST support |
eGov-112 |
432 |
SHOULD support |
RequID | Line | Requirement |
---|---|---|
eGov-113 |
436 |
MUST support |
eGov-114 |
437 |
MUST support |
eGov-115 |
438 |
MUST support |
eGov-116 |
441 |
MUST support |
eGov-117 |
442 |
MUST support |
eGov-118 |
445 |
SHOULD support |
3.2. Standard with Logout
Conforming Identity Provider and/or Service Provider implementations MUST meet the conformance requirements in section 3.1, and MUST in addition support the normative requirements in section 2.8.
3.3. Standard with Logout
Conforming Identity Provider and/or Service Provider implementations MUST meet the conformance requirements in section 3.1, and MUST in addition support the normative requirements in sections 2.6, 2.7, and 2.8.
4. References
4.1. Normative References
-
[RFC2119] IETF RFC 2119, Key words for use in RFCs to Indicate Requirement Levels, March 1997. http://www.ietf.org/rfc/rfc2119.txt
-
[RFC2560] IETF RFC 2560, X.509 Internet Public Key Infrastructure Online Certificate Status Protocol, June 1999. http://www.ietf.org/rfc/rfc2560.txt
-
[RFC2616] IETF RFC 2616, Hypertext Transfer Protocol – HTTP/1.1, June 1999. http://www.ietf.org/rfc/rfc2616.txt
-
[RFC2818] IETF RFC 2818, HTTP Over TLS, May 2000. http://www.ietf.org/rfc/rfc2818.txt
-
[RFC4051] IETF RFC 4051, Additional XML Security Uniform Resource Identifiers, April 2005. http://www.ietf.org/rfc/rfc4051.txt
-
[RFC5280] IETF RFC 5280, Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile, May 2008. http://www.ietf.org/rfc/rfc5280.txt
-
[HoKSSO] OASIS Committee Specification, SAML V2.0 Holder-of-Key Web Browser SSO Profile Version 1.0, July 2009. http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-holder-of-key-browser-sso.html
-
[IAP] OASIS Committee Draft, Identity Assurance Profiles, Version 1.0, September 2009. http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-assurance-profile-cd-01.html
-
[IdPDisco] OASIS Committee Specification, Identity Provider Discovery Service Protocol and Profile, March 2008. http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-idp-discovery.html
-
[MetaAttr] OASIS Committee Specification, SAML V2.0 Metadata Extension for Entity Attributes Version 1.0, August 2009. http://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-attr.html
-
[MetaIOP] OASIS Committee Specification, SAML V2.0 Metadata Interoperability Profile Version 1.0, August 2009. http://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop.html
-
[SAML2Core] OASIS Standard, Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0, March 2005. http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf
-
[SAML2Meta] OASIS Standard, Metadata for the OASIS Security Assertion Markup Language (SAML) V2.0, March 2005. http://docs.oasis-open.org/security/saml/v2.0/saml-metadata-2.0-os.pdf
-
[SAML2Bind] OASIS Standard, Bindings for the OASIS Security Assertion Markup Language (SAML) V2.0, March 2005. http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf
-
[SAML2Prof] OASIS Standard, Profiles for the OASIS Security Assertion Markup Language (SAML) V2.0, March 2005. http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf
-
[SAML2Err] OASIS Approved Errata, SAML V2.0 Errata, Dec 2009. SAML 2.0 Errata Document. http://docs.oasis-open.org/security/saml/v2.0/sstc-saml-approved-errata-2.0.html
-
[SAML-X500] OASIS Committee Specification, SAML V2.0 X.500/LDAP Attribute Profile, March 2008. http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-attribute-x500.html
-
[SAMLEntityCat] IETF Draft, The Entity Category SAML Entity Metadata Attribute Types, 2015-01-22. https://datatracker.ietf.org/doc/draft-young-entity-category/
-
[XMLEnc] D. Eastlake et al. XML Encryption Syntax and Processing. World Wide Web Consortium Recommendation. http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/
-
[XMLEnc11] D. Eastlake et al. XML Encryption Syntax and Processing Version 1.1. World Wide Web Consortium Last Call Working Draft. http://www.w3.org/TR/2010/WD-xmlenc-core1-20100513/
-
[XMLSig] D. Eastlake et al. XML-Signature Syntax and Processing, Second Edition. World Wide Web Consortium Recommendation, June 2008. http://www.w3.org/TR/xmldsig-core/