Renan Roggia
I consider myself a tech problem solver.
The Security Assertion Markup Language 2.0 is an XML-based framework that allows identity and security information to be shared across security domains.
SAML is defined by another specification. OASIS.saml-core-2.0-os
.
SAML is primarily targeted at providing cross domain Web browser single sign-on.
The assertion, an XML security token, defined by the SAML specification is often used by other protocols and specs.
An Identity Provider issues Assertions.
A Service Provider relies on its content to identify the Assertion's subject for security-related purposes.
After that, the specification gives a small overview about OAuth 2.0 (RFC 6749) and the use of assertions as authentication grant/ client credentials (RFC 7521).
This specification defines two main things:
Uses keywords as described in RFC 2119.
As described in the RFC6749, RFC 7521 and OASIS.saml-core-2.0-os.
Same parameters as defined in the RFC7521.
As described in the section 4.1 of the RFC7521.
The value of grant_type
parameter is urn:ietf:params:oauth:grant-type:saml2-bearer
.
The value of assertion
parameter is contains a single SAML 2.0 Assertion encoded by base64url
.
The scope
parameter may be used to indicate the request scope.
Authentication of the client is optional.
Same example as RFC7521 in the section 4.1.
As described in the section 4.2 of the RFC7522.
The value of client_assertion_type
parameter is urn:ietf:params:oauth:client-assertion-type:saml2-bearer
The value of client_assertion
parameter contains a single SAML 2.0 Assertion encoded by base64url
.
Same example as RFC7521 in the section 4.2.
Authorization server must validate the Assertion according to the criteria below.
<Conditions>
element with an <AudiencRestriction>
element with an <Audience>
element that identifies the authorization server as audience.The Assertion must have an <Subject>
element that identifies the principal that is the subject of the Assertion.
client_id
.<Conditions NotOnOrAfter="">
or <SubjectConfirmationData NotOnOrAfter="">
.<Subject>
must have at least one <SubjectConfirmation>
.<AuthnStatement>
if the assertion issuer directly authenticated the subject.AttributeStatement
.Assertion authorization grant may be used with or without client authentication or identification.
If client credentials are presented in the request, the authorization server must validate them.
If the assertion is not valid, the server creates a error response as defined by the OAuth 2.0.
The error
parameter must be invalid_grant
.
If the client authorization is not valid the authorization server response follows the OAuth 2.0 structure.
The error
parameter must be ìnvalid_client
.
The Assertion is issued and signed by the SAML Identity Provider ("https://saml-idp.example.com").
The subject of the assertion is identified by email address ("brian@example.com"). He authenticated to the Identity Provider through digital signature.
The intended audience is "https://saml-sp.example.net", which is an SAML Service Provider. The authorization service identifies itself to the SAML Service Provider.
The assertion is sent as part of an access token request to the authorization server.
The specification contains an assertion as example.
Very similar to the RFC 7521.
Same security considerations as the applicable to the RFC 6749, RFC 7521 and SAML 2.0.
An assertion may contain privacy-sensitive information, therefore, use TLS and encrypt this information.
Registers the values grant-type:saml2-bearer
and client-assertion-type:saml2-bearer
.