【问题标题】:Flow for OAuth1a DNOA and the tokenOAuth1a DNOA 和令牌的流程
【发布时间】:2012-09-27 21:58:15
【问题描述】:

我们正在使用 DNOA 的 .Net MVC4 WebApi 应用程序和使用 Spring Security 的 Java 应用程序之间实现一个简单的 2 腿 OAuth1a 对话。在实现 Delegating 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 调用中遇到异常,表示它收到了 UnauthorizedRequest。 那么这个流程应该是什么样的呢?我看到的大多数内容都表明这种类型的流程不需要令牌,但 DNOA 似乎坚持这样做。任何见解都值得赞赏。

【问题讨论】:

    标签: oauth asp.net-mvc-4 asp.net-web-api dotnetopenauth


    【解决方案1】:

    听起来你想要做的是actually 0-legged OAuth(无论如何,用我的术语来说,因为在你想要做的事情中没有原始的 3 个 OAuth 分支)。至少我从您的描述中了解到,您的访问令牌和访问令牌秘密是空的,您拥有的只是消费者密钥和秘密。

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

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

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

    【讨论】:

    • 是的,就是这样,我不太喜欢这个主意。我想我已经说服了管道的另一端,我们需要用令牌做两条腿。
    猜你喜欢
    • 2020-01-09
    • 2020-08-19
    • 2021-04-30
    • 2021-08-23
    • 1970-01-01
    • 2021-09-17
    • 2018-06-03
    • 2020-12-13
    • 1970-01-01
    相关资源
    最近更新 更多