OAuth Echo - delegation in identity verification
Attached is an example workflow diagram for OAuth Echo — what I'm now calling the delegation for identity verification workflow (thanks to @joestump for the name). This diagram is the latest evolution from take 1 and take 2.
You're an OAuth enabled Twitter client, and you've already authorized your user. You user wants to use a media providing service like TwitPic. TwitPic, currently, asks for the username and password of your user so it can store the photo on behalf of the Twitter user. You don't have that username and password, so how do you give the ability to TwitPic to verify the identity of your user?
- OAuth Echo - plain and vanilla identity verification delegation - this is the version that Twitter is most likely to implement and advocate; and
- OAuth Echo Restricted - adding some security restrictions around OAuth Echo to ensure that an identity verification delegation request can only occur through a named and specific Delegator
Comments (8)
It would be preferable to let C request a token from D in a preliminary step, which would perform identity verification. The upload of the image data would happen in a second request, containing that token.
Actually this would make the workflow closer to plain OAuth, which might be a good idea in itself.
The general problem with this approach is this: We want to delegate authentication (identity verification). In OAuth, identity verification is done only once, when binding an identity to a token. It is separate from authorization for each subsequent secure request. This proposal collapses these two concepts.
Because of this, every request to a protected resource (C to D) requires a verify request from D to SP (since a new Authorization header has to be sent each time, with a new nonce). If C makes many such requests, which is quite plausible, there will be lots of unnecessary traffic to SP.
Clearly the one-time authentication is the only step in OAuth that needs to be delegated. This should only require a minimal change to OAuth, instead of a new workflow.
- if implementing the upload endpoint, then you have to hold onto the photo until you can verify with Twitter, using the username and password. if Twitter can't verify it, then you may have to delete the photo; and
- if implementing the uploadAndPost endpoint, the its a similar problem. the photo needs to be held onto while the API implementor attempts to post a status update on Twitter. if that status update fails, then the photo will be deleted



