我正在尝试使用oAuth并使用DotNetOpenAuth实现身份验证。
我们有多个REST Web服务来满足项目需求。有一个AuthenticationService,客户服务,订单服务等。
Consumer将使用此服务对用户进行身份验证,并从中获取Access Token。现在,Consumer将在Customer Service上使用一种方法并传递Access令牌。
客户服务现在想要验证来自身份验证服务的访问令牌。
我尝试捕获客户服务中的Consumer发送的授权标头,并尝试将其传递给客户服务部门的身份验证服务但是它引发了“签名无效”错误,这似乎是正确的,因为消费者用来构建签名的URI是Customer服务但在验证服务中验证时,实际请求来自客户服务部门。
希望我能够解释这个问题。
我该如何解决这个问题?
答案 0 :(得分:1)
我假设您使用的是OAuth 1.0。听起来您正在将OAuth授权从客户服务转发到身份验证服务,以便身份验证服务认为该令牌仅用于 it 而不是客户服务。如果是这样,那么这个无效的签名是设计的,因为你有效地(并且意外地)进行攻击,MITM将令牌重定向到另一个服务。
每项服务必须验证访问令牌本身 - 它无法将其转发给其他服务。每个服务都可以通过与身份验证服务共享ITokenManager
的数据库来实现此目的。