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



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

我们有多个RESTWeb服务来满足项目需求。有一个身份验证服务,客户服务,订单服务等

消费者将使用此服务对用户进行身份验证并从中获取访问令牌。现在消费者将在客户服务上使用一个方法并传递访问令牌。

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

我试图捕获消费者在客户服务中发送的授权标头,并试图将其从客户服务传递给身份验证服务,但它抛出了"签名无效"错误,这似乎是正确的,因为消费者用于构建签名的URI是客户服务的,但在身份验证服务中验证时,实际请求来自客户服务不同的。

希望我能解释一下这个问题。

我该如何解决这个问题?

我假设您使用的是OAuth 1.0。这听起来像是将OAuth授权从客户服务转发到身份验证服务,这样身份验证服务就会认为令牌是为it而不是客户服务准备的。如果是这样,那么这个无效签名是故意的,因为你有效地(意外地)进行了一次攻击,MITM将令牌重定向到另一个服务。

每个服务都必须为自己验证访问令牌——它不能将其转发给另一个服务。每个服务都可以通过与身份验证服务共享ITokenManager的数据库来实现这一点。

相关内容

最新更新