elegant design :-) which raises an important question to me:

If we would design any API for the web we would probably use mime types and JSON/XML for transporting data.

Why don't we use similar techniques for the OAuth authorization API?

regards,
Torsten.

BTW: Our security token service at Deutsche Telekom does it that way. Developers like the easy way they can authenticate, access identity data and integrate these functions into their applications.

Am 16.04.2010 17:38, schrieb Manger, James H:

One thing missing from the current access token responses is any indication of where the token can be used.

This seems potentially dangerous as the token might be included when, say, following links or redirects from a protected resource.

The solution is probably fairly easy: specify the list of services where the token can be used when the token is issued.

1. A list of domains?

2. A list of “origins” (scheme://host:port)?

3. Allow a wildcard, eg *.example.com?

I’ll pick #2.

Example: sites=https://api.example.com http://photo.example.com

Others have noted the similarities between a bearer token and a cookie. Cookies indicate where they can be used. They also have some other meta-data that might help tokens. For instance, a ‘secure’ field indicating that the token must not be used without https.

All this information describing the token deserves its own media type.

My suggestion: application/credentials.

It could keep the existing syntax, but a little more structure from a syntax such as JSON might be easier. That would also make it easier to include multiple tokens (eg a bearer token, another with a secret, another for a specific service).

The refresh_token field would be better thought of as a URI for a token resource.

Example:

C->S:

  POST /token/ HTTP/1.1

  …

C<-S:

  HTTP/1.1 200 OK

  Content-type: application/credentials

  {

    “location”:”http://as.example.com/token/76875634576387634765374”,

    “expires_in”:3600,

    “credentials”:{

{ “scheme”:”TOKEN”, “sites”:[“https://api.example.com”, http://photo.example.com”],

         “realm”:”General apps”, “id”:”HGF676t7f6f7F67ffr76ff” },

     { “scheme”:”BASIC”, “sites”:[“https://blog.example.com”],

“realm”:”General apps”, “id”:”dGFDdd464464Ddfd”, “secret”:”tutvT67vV76tvTtvTvTv” }

    }

  }

Use the “location” field to refresh (or delete) the token.

--

James Manger


_______________________________________________
OAuth mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/oauth

_______________________________________________
OAuth mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to