使用DotNetOpenAuth通过单一访问令牌授权Web服务之间的请求

时间:2012-03-30 14:34:36

标签: .net oauth dotnetopenauth

我正在尝试使用oAuth并使用DotNetOpenAuth实现身份验证。

我们有多个REST Web服务来满足项目需求。有一个AuthenticationService,客户服务,订单服务等。

Consumer将使用此服务对用户进行身份验证,并从中获取Access Token。现在,Consumer将在Customer Service上使用一种方法并传递Access令牌。

客户服务现在想要验证来自身份验证服务的访问令牌。

我尝试捕获客户服务中的Consumer发送的授权标头,并尝试将其传递给客户服务部门的身份验证服务但是它引发了“签名无效”错误,这似乎是正确的,因为消费者用来构建签名的URI是Customer服务但在验证服务中验证时,实际请求来自客户服务部门。

希望我能够解释这个问题。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我假设您使用的是OAuth 1.0。听起来您正在将OAuth授权从客户服务转发到身份验证服务,以便身份验证服务认为该令牌仅用于 it 而不是客户服务。如果是这样,那么这个无效的签名是设计的,因为你有效地(并且意外地)进行攻击,MITM将令牌重定向到另一个服务。

每项服务必须验证访问令牌本身 - 它无法将其转发给其他服务。每个服务都可以通过与身份验证服务共享ITokenManager的数据库来实现此目的。