OAuth1a DNOA和令牌的流

OAuth1a DNOA和令牌的流,oauth,asp.net-mvc-4,asp.net-web-api,dotnetopenauth,Oauth,Asp.net Mvc 4,Asp.net Web Api,Dotnetopenauth,我们在使用DNOA的.Net MVC4 WebApi应用程序和使用Spring Security的Java应用程序之间实现一个简单的两条腿OAuth1a对话。在实现委托MessageHandler来验证传入请求时,DNOA似乎坚持在请求中使用令牌。Spring实现不需要令牌。我的感觉是.Net实现在某种程度上是不正确的 这是处理程序,如果我用令牌发送它,它就可以工作 TokenManager tokenManager = new TokenManager(); var requestW = ne

我们在使用DNOA的.Net MVC4 WebApi应用程序和使用Spring Security的Java应用程序之间实现一个简单的两条腿OAuth1a对话。在实现委托MessageHandler来验证传入请求时,DNOA似乎坚持在请求中使用令牌。Spring实现不需要令牌。我的感觉是.Net实现在某种程度上是不正确的

这是处理程序,如果我用令牌发送它,它就可以工作

TokenManager tokenManager = new TokenManager();
var requestW = new HttpRequestWrapper(HttpContext.Current.Request);
var sp = new ServiceProvider(Constants.SelfDescription, tokenManager, new NonceStore());
try
{
     var auth = sp.ReadProtectedResourceAuthorization(requestW);
     if (auth != null)
     {
            //verfy etc etc
     }
 catch(Exception)
 { //return UnAuthorized response }
 return base.SendAsync(request, cancellationToken);
}
在这段代码中,我在ReadProtectedResourceAuthorization调用中得到一个异常,该调用表示它收到了一个未经授权的请求。
那么这个流程应该是什么样的呢?我看到的大多数情况都表明,这种类型的流不需要令牌,但DNOA似乎坚持这样做。任何洞察都是值得赞赏的。

听起来你想要做的是(用我的术语来说,因为在你想要做的事情中没有OAuth最初的3个分支)。至少我从您的描述中了解到,您的访问令牌和访问令牌密钥是空的,您所拥有的只是消费者密钥和密钥

如果我没记错的话,DNOA不支持空的访问令牌(因为OAuth 1规范中不允许空的访问令牌)

您可以尝试以下可能的替代方案:

  • 使用非空(但如果需要,可能仍然是硬编码的)访问令牌和访问令牌密码
  • 改为使用HTTPS上的基本身份验证,使用您的使用者密钥和使用者机密作为用户名和密码
  • 使用另一个OAuth 1服务提供程序库

  • 是的,这正是我的想法,我不太喜欢这个想法。我想我已经说服了管道的另一端,我们需要用令牌做两条腿的。