Internet DRAFT - draft-wahlstroem-ace-oauth-introspection
draft-wahlstroem-ace-oauth-introspection
Network Working Group E. Wahlstroem
Internet-Draft Nexus Technology
Intended status: Informational March 9, 2015
Expires: September 10, 2015
OAuth 2.0 Introspection over the Constrained Application Protocol (CoAP)
draft-wahlstroem-ace-oauth-introspection-01.txt
Abstract
This document defines a method for a client or resource server to
query an OAuth authorization server to determine meta- information
about an OAuth token using the Constrained Application Protocol
(CoAP) [4]. An client in possession of a OAuth2 token can use it to
get metadata about the token like validity and approved scopes.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 10, 2015.
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Wahlstroem Expires September 10, 2015 [Page 1]
Internet-Draft OAuth 2.0 Token Introspection over CoAP March 2015
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. Introspection CoAP Endpoint . . . . . . . . . . . . . . . . . 3
4. Introspection Request . . . . . . . . . . . . . . . . . . . . 3
5. Introspection Response . . . . . . . . . . . . . . . . . . . 3
6. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
7. Security Considerations . . . . . . . . . . . . . . . . . . . 5
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 5
10. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 5
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 5
11.1. Normative References . . . . . . . . . . . . . . . . . . 5
11.2. Informative References . . . . . . . . . . . . . . . . . 6
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 6
1. Introduction
OAuth2 enables clients to access protected resources by obtaining an
access token, which is defined in "The OAuth 2.0 Authorization
Framework" [2] as "a string representing an access authorization
issued to the client", rather than using the resource owner's
credentials directly.
Tokens are issued to clients by an authorization server and the
client uses the access token to access the protected resources hosted
by the resource server. This document defines a way for a holder of
this token, mostly Clients and Resource Servers, to get metadata like
validity and scopes for the token. The OAuth Token Introspection
specification [14] defines a way to validate the token using HTTP
POST or HTTP GET. This document reuses the work done in the OAuth
Token Introspection and defines a mapping of the request and response
to CoAP [4] to be used by constrained devices.
2. Terminology
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 "Key words for use in
RFCs to Indicate Requirement Levels" [1].
This document also re-uses terminology from RFC 6749 [2] and RFC 6750
[6].
Wahlstroem Expires September 10, 2015 [Page 2]
Internet-Draft OAuth 2.0 Token Introspection over CoAP March 2015
3. Introspection CoAP Endpoint
The Introspection CoAP Endpoint responds to CoAP Confirmable requests
from token holders, particularly Clients and Resource Servers. The
endpoint takes a single parameter representing the token (and
optionally further authentication) and returns a JSON [7] document
representing the meta information surrounding the token. The
endpoint MUST be protected by DTLS [5] or equivalent.
4. Introspection Request
The token holder makes a request to the Introspection CoAP Endpoint
by adding the following parameters using the "application/x-www-form-
urlencoded" format with a character encoding of UTF-8 in the CoAP
request entity-body:
In order to prevent man-in-the-middle attacks, the client MUST
require the use of DTLS with server authentication for any request
sent to the authorization and token endpoints. If certificate-based
server authentication is used then the client MUST validate the TLS
certificate of the authorization server, as defined by RFC6125.
The Endpoint SHOULD also require some form of authentication to
access this endpoint, such as the Client Authentication as described
in OAuth 2.0 [RFC6749] or equivalent.
token: REQUIRED. The string value of the token.
resource_id: OPTIONAL. A service-specific string identifying the
resource that the client doing the introspection is asking about.
token_type_hint: OPTIONAL. A hint about the type of the token
submitted for introspection. Clients MAY pass this parameter in
order to help the authorization server to optimize the token
lookup. If the server is unable to locate the token using the
given hint, it MUST extend its search across all of its supported
token types. An authorization server MAY ignore this parameter,
particularly if it is able to detect the token type automatically.
Values for this field are defined in OAuth Token Revocation
[RFC7009].
5. Introspection Response
If the introspection request is valid and authorized, the
authorization server responds with a CoAP message using Content
response code with the response encoded as a JSON structure in the
payload of the message. If the request failed client authentication
or is invalid, the authorization server returns an error response
Wahlstroem Expires September 10, 2015 [Page 3]
Internet-Draft OAuth 2.0 Token Introspection over CoAP March 2015
using the CoAP 4.00 'Bad Request' response code with the error
messages defined in Section 5.2 of RFC 6749 [2].
The JSON structure in the payload response includes the top-level
members defined in Section 2.2 in the OAuth Token Introspection
specification [14]. It's recommended to only return the active
attribute considering the lossy and constrained nature of CoAP client
and server network and capacity.
Note that the HTTP "Cache-Control" parameters MAY be used in the CoAP
response message.
6. Example
For example, the client makes a CoAP request carrying the
introspection request protected with DTLS to the authorization
server. It then receives a response containing metadata about the
token.
In the example below content-type 51 corresponds to the 'application/
x-www-form-urlencoded'.
Authorization
Client Server
| |
|<=======>| DTLS Connection Establishment
| |
+-------->| Header: POST (T=CON, Code=0.02, MID=0x7d34,
| POST | ct=51, Uri-Path:"introspect"
| | Payload: cid=qwerty&cs=2123&t=X3241Affw.4233-99JXJ
| |
|<--------+ Header: 2.05 Content (T=ACK, Code=2.05, MID=0x7d34,
| 2.05 | ct=50)
| | Payload: <JSON-Payload>
| |
<JSON-Payload>:=
{
"active": true
}
Figure 1: Example CoAP Introspection Exchange.
Wahlstroem Expires September 10, 2015 [Page 4]
Internet-Draft OAuth 2.0 Token Introspection over CoAP March 2015
7. Security Considerations
TBD
8. IANA Considerations
TBD
9. Acknowledgements
The author would like to thank Justin Richer for his work on [14]
richer-oauth-introspection and Hannes Tschofenigs [10] and [11].
This document is heavily inspired from those document's and it
borrows a lot of texts from there work. The author would also like
to thank Samuel Erdtman for valuable input.
10. Change Log
[[This section to be removed prior to publication as an RFC]]
Draft 01 - Using same request format as OAuth2 introspection endpoint
to ease proxying.
11. References
11.1. Normative References
[1] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[2] Hardt, D., "The OAuth 2.0 Authorization Framework", RFC
6749, October 2012.
[3] Saint-Andre, P. and J. Hodges, "Representation and
Verification of Domain-Based Application Service Identity
within Internet Public Key Infrastructure Using X.509
(PKIX) Certificates in the Context of Transport Layer
Security (TLS)", RFC 6125, March 2011.
[4] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained
Application Protocol (CoAP)", RFC 7252, June 2014.
[5] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
Security Version 1.2", RFC 6347, January 2012.
[6] Jones, M. and D. Hardt, "The OAuth 2.0 Authorization
Framework: Bearer Token Usage", RFC 6750, October 2012.
Wahlstroem Expires September 10, 2015 [Page 5]
Internet-Draft OAuth 2.0 Token Introspection over CoAP March 2015
[7] Crockford, D., "The application/json Media Type for
JavaScript Object Notation (JSON)", RFC 4627, July 2006.
[8] Tschofenig, H. and T. Fossati, "A TLS/DTLS Profile for the
Internet of Things", draft-ietf-dice-profile-10 (work in
progress), March 2015.
[9] Tschofenig, H., "OAuth 2.0: Audience Information", draft-
tschofenig-oauth-audience-00 (work in progress), February
2013.
11.2. Informative References
[10] Tschofenig, H., "The OAuth 2.0 Bearer Token Usage over the
Constrained Application Protocol (CoAP)", draft-
tschofenig-ace-oauth-bt-01 (work in progress), March 2015.
[11] Tschofenig, H., "The OAuth 2.0 Internet of Things (IoT)
Client Credentials Grant", draft-tschofenig-ace-oauth-
iot-01 (work in progress), March 2015.
[12] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token
(JWT)", draft-ietf-oauth-json-web-token-32 (work in
progress), December 2014.
[13] Hunt, P., Richer, J., Mills, W., Mishra, P., and H.
Tschofenig, "OAuth 2.0 Proof-of-Possession (PoP) Security
Architecture", draft-hunt-oauth-pop-architecture-02 (work
in progress), June 2014.
[14] Richer, J., "OAuth Token Introspection", draft-richer-
oauth-introspection-06 (work in progress), July 2014.
[15] Bormann, C., "An Authorization Information Format (AIF)
for ACE", draft-bormann-core-ace-aif-01 (work in
progress), July 2014.
[16] Seitz, L., Gerdes, S., Selander, G., Mani, M., and S.
Kumar, "ACE use cases", draft-seitz-ace-usecases-02 (work
in progress), October 2014.
Author's Address
Wahlstroem Expires September 10, 2015 [Page 6]
Internet-Draft OAuth 2.0 Token Introspection over CoAP March 2015
Erik Wahlstroem
Nexus Technology
Sweden
Email: erik.wahlstrom@nexusgroup.com
URI: https://www.nexusgroup.com
Wahlstroem Expires September 10, 2015 [Page 7]