В результате я провел несколько обширных исследований, чтобы выяснить, что мне не нужен традиционный трехсторонний OAuth, а нужен только двуногий. Проблема в том, что двухстороннюю информацию об OAuth найти довольно сложно. Наконец-то я нашел спецификацию Google для реализации двухстороннего OAuth:
http://oauth.googlecode.com/svn/spec/ext/consumer_request/1.0/drafts/2/spec.html
Я также нашел реализацию этого, поскольку Justin.tv использует его для своих услуг:
http://apiwiki.justin.tv/mediawiki/index.php/OAuth_Ruby_Tutorial
Я также наткнулся на отличный инструмент тестирования OAuth, который мне очень помог в реализации сервиса:
http://term.ie/oauth/example/client.php
Двусторонняя OAuth довольно проста, если вы понимаете, что ищете, и как это реализовать. Если вы ищете OAuth, скорее всего, вы найдете статьи, рассказывающие о традиционном трехстороннем OAuth, в котором участвуют 3 стороны, как и следует из названия: потребители, поставщики услуг И пользователи . Двуногие строго вовлекают потребителей и поставщиков услуг. Если ваша служба не занимается конкретно с пользователями, вам нужен 2-сторонний OAuth.
Что касается фреймворка, я использую ASP.NET MVC, поэтому я остановился на репозитории github, расположенном здесь:
https://github.com/buildmaster/oauth-mvc.net
Он получил действительно хороший, чистый код и использует внедрение зависимостей (Ninject). Мне не потребовалось много времени, чтобы изменить его для двухстороннего OAuth.