TOC 
Draft specs@openid.net
 January 5, 2010


OpenID Artifact Binding 1.0 - Draft01

Abstract

OpenID Authentication 2.0 defines the method to move Authentication and associated extension requests among the User, Relying Party, and the OpenID provider through HTTP POST or GET, i.e., it defines the POST and GET binding for OpenID messaging. This specification defines the Artifact Binding that sends the OpenID message directly from the Relying Party to the OpenID Provider and passes only a small reference data called Artifact through the browser so that large payload can be moved between the Relying Party and the OpenID Provider without hitting the browser URL and HTTP header size limitation.



Table of Contents

1.  Requirements Notation and Conventions
2.  Terminology
3.  Protocol Overview
4.  Data Formats
5.  Communication Types
6.  Generating Signatures
7.  Protocol
    7.1.  Initiation and Discovery
    7.2.  Establishing Associations
    7.3.  Direct Authencitaction Request
    7.4.  Direct Authentication Request Response
    7.5.  Artifact Authentication Request
    7.6.  Artifact Authentication Response
    7.7.  Direct Assertion Request
    7.8.  Direct Assertion Response
    7.9.  Verifying Assertions
8.  Extensions
9.  Discovering OpenID Relying Parties
10.  Security Considerations
Appendix A.  Acknowledgements
11.  Normative References
§  Author's Address




 TOC 

1.  Requirements Notation and Conventions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] (Bradner, B., “Key words for use in RFCs to Indicate Requirement Levels,” .).

Throughout this document, values are quoted to indicate that they are to be taken literally. When using these values in protocol messages, the quotes MUST NOT be used as part of the value.



 TOC 

2.  Terminology

In addition to the terminology used in [OpenID.authentication‑2.0] (specs@openid.net, “OpenID Authentication 2.0,” 2007.), following terms are used.

Artifact:
An Artifact is a small text associated with the larger payload that identifies the payload.



 TOC 

3.  Protocol Overview

  1. The end user initiates authentication (Initiation and Discovery) by presenting a User-Supplied Identifier to the Relying Party via their User-Agent.
  2. 1.After normalizing the User-Supplied Identifier, the Relying Party  performs discovery on it and establishes the OP Endpoint URL that the end user uses for authentication. It should be noted that the User-Supplied Identifier may be an OP Identifier, as discussed in  Section 7.3.1 of OpenID Authentication 2.0, which allows selection of a Claimed Identifier at the OP or for the protocol to proceed without a Claimed Identifier if something else useful is being done via an extension.
  3. (optional) The Relying Party and the OP establish an association (Establishing Associations) -- a shared secret established using Diffie-Hellman Key Exchange (Rescorla, E., “Diffie-Hellman Key Agreement Method,” .) [RFC2631]. The OP uses an association to sign subsequent messages and the Relying Party to verify those messages; this removes the need for subsequent direct requests to verify the signature after each authentication request/response.
  4. The Relying Party Sends the OpenID Authentication Request to the OP via direct communication and obtains an Artifact.
  5. The Relying Party redirects the end user's User-Agent to the OP with an OpenID Artifact Authentication request (Artifact Authentication Request).
  6. The OP establishes whether the end user is authorized to perform OpenID Authentication and wishes to do so. The manner in which the end user authenticates to their OP and any policies surrounding such authentication is out of scope for this document.
  7. The OP redirects the end user's User-Agent back to the RP with Artifact Authentication Response.
  8. The RP GETs the assertion from the OP through direct communication (Direct Assertion Request and Response.)
  9. The Relying Party verifies (Verifying Assertions) the information received from the OP including checking the Return URL, verifying the discovered information, checking the nonce, and verifying the signature by using either the shared key established during the association or by sending a direct request to the OP.

A Typical sequence can be depicted as follows:



 TOC 

4.  Data Formats

Data Format is the same as in [OpenID.authentication‑2.0] (specs@openid.net, “OpenID Authentication 2.0,” 2007.) section 4.



 TOC 

5.  Communication Types

Communication Types are the same as in [OpenID.authentication‑2.0] (specs@openid.net, “OpenID Authentication 2.0,” 2007.) section 5. In addition to those defined, the Artifact Binding uses Direct Communication for sendin and receiving authentication message.



 TOC 

6.  Generating Signatures

Signature Generation is the same as in [OpenID.authentication‑2.0] (specs@openid.net, “OpenID Authentication 2.0,” 2007.) section 6.



 TOC 

7.  Protocol



 TOC 

7.1.  Initiation and Discovery

Initiation and Discovery is the same as in [OpenID.authentication‑2.0] (specs@openid.net, “OpenID Authentication 2.0,” 2007.) section 7.



 TOC 

7.2.  Establishing Associations

It is the same as in [OpenID.authentication‑2.0] (specs@openid.net, “OpenID Authentication 2.0,” 2007.) section 8.



 TOC 

7.3.  Direct Authencitaction Request

Once the Relying Party has successfully performed discovery and (optionally) created an association with the discovered OP Endpoint URL, it can send an authentication request to the OP to obtain an assertion. When requesting authentication, the Relying Party MUST send the request in direct communication to the OP. Upon receipt of a valid request, OP MUST return a unique short string less than 400 characters called an Artifact to identify this request. The Artifact value must include the string constructed from a cryptographically strong random or pseudorandom number sequence [RFC1750] generated by the OP. The Artifact is subsequently used over an indirect request, the Artifact Authentication Request.

Parameters sent are as follows:



 TOC 

7.4.  Direct Authentication Request Response

When Direct Authentication Request is received successfully, the OP performs request validation. Request validation includes Return URL Verification as in [OpenID.authentication‑2.0] (specs@openid.net, “OpenID Authentication 2.0,” 2007.) section 9.2 as well as the signature validation.

If the request is valid, the OP returns the following fields in the HTTP response body.



 TOC 

7.5.  Artifact Authentication Request

Upon receipt of the Artifact, RP should send the Artifact Authentication Request to the OP. Fields are as follows:



 TOC 

7.6.  Artifact Authentication Response

Upon receipt of the Artifact Authentication Request, the OP MUST determine that an authorized end user wishes to complete the authentication in the manner described in Section 10 of the [OpenID.authentication‑2.0] (specs@openid.net, “OpenID Authentication 2.0,” 2007.). Once it is determined, the OP creates either positive or negative assertion and associated artifact and returns the response as follows:

No other parameter should be returned.



 TOC 

7.7.  Direct Assertion Request

If valid openid.artifact was returned, the RP SHOULD request the OP in direct communication with the following parameters:

On receipt of such request, the OP should return the assertion created previously as the payload of the response to this request.



 TOC 

7.8.  Direct Assertion Response

Upon receipt of the Direct Assertion Request, OP MUST return either Positive or Negative Assertion as defined in [OpenID.authentication‑2.0] (specs@openid.net, “OpenID Authentication 2.0,” 2007.) in the HTTP/S response body.



 TOC 

7.9.  Verifying Assertions

Assertion verification is done as in Section 11 of [OpenID.authentication‑2.0] (specs@openid.net, “OpenID Authentication 2.0,” 2007.).



 TOC 

8.  Extensions

Extensions are as defined in Section 12 of [OpenID.authentication‑2.0] (specs@openid.net, “OpenID Authentication 2.0,” 2007.). In addition, this specification adds “artifact” in the disallowed aliases.



 TOC 

9.  Discovering OpenID Relying Parties

Relying Party Discovery is as in Section 13 of [OpenID.authentication‑2.0] (specs@openid.net, “OpenID Authentication 2.0,” 2007.).



 TOC 

10.  Security Considerations



 TOC 

Appendix A.  Acknowledgements

As a binding of OpenID Authentication, this specification heavily relies on OpenID Authentication 2.0. Please refer to Appendix C of OpenID Authentication 2.0 for the full list of the contributors for OpenID Authentication 2.0.

In addition, the OpenID Community would like to thank the following people for the work they've done in the drafting and editing of this specification. If you want to know the nitty gritty of who actually wrote what, feel free to look at our BitBucket repository.

Breno de Madiros (breno@gmail.com)

Hideki Nara (hideki.nara@gmail.com)

Nat Sakimura (sakimura@gmail.com) <author/editor>



 TOC 

11. Normative References

[FIPS180-2] U.S. Department of Commerce and National Institute of Standards and Technology, “Secure Hash Signature Standard,” FIPS 180-2.

Defines Secure Hash Algorithm 256 (SHA256)

[HTML401] W3C, “HTML 4.01 Specification.”
[OpenID.authentication-2.0] specs@openid.net, “OpenID Authentication 2.0,” 2007 (TXT, HTML).
[RFC1750] Eastlake, D., Crocker, S., and J. Schiller, “Randomness Recommendations for Security,” RFC 1750.
[RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, “HMAC: Keyed-Hashing for Message Authentication,” RFC 2104.
[RFC2119] Bradner, B., “Key words for use in RFCs to Indicate Requirement Levels,” RFC 2119.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, “Hypertext Transfer Protocol -- HTTP/1.1,” RFC 2616.
[RFC2631] Rescorla, E., “Diffie-Hellman Key Agreement Method,” RFC 2631.
[RFC3548] Josefsson, S., “The Base16, Base32, and Base64 Data Encodings,” RFC 3548.
[RFC3629] Yergeau, F., “UTF-8, a transformation format of Unicode and ISO 10646,” RFC 3629.
[RFC3986] Berners-Lee, T., “Uniform Resource Identifiers (URI): Generic Syntax,” RFC 3986.


 TOC 

Author's Address

  specs@openid.net