1

我需要对我们将托管的一些 Web 服务实施身份验证。我想使用开放标准,所以我对 OAuth 很感兴趣。

我将为这些服务使用 WebAPI。

所以这就是我遇到麻烦的地方:我读过的大多数(或可能全部)Api Key/OAuth 场景都涉及(在某个时候或另一个时候)坐在屏幕前的用户。

我需要组合一个业务合作伙伴将调用的 API。这些呼叫将来自一个自动化过程——在链条中的任何地方都不会有人可以通过登录凭据被重定向到一个网站。

但是,我不希望任何人过来打电话给我的服务。

因此,我阅读了有关 OAuth 的信息,以及它如何使用共享密钥来签署每个请求,我认为这就是我所追求的。(我会设置一个会话密钥,或者可以考虑将其中一个参数设置为“ticks”值,并且只在短时间内接受请求等)

我有点希望我可以使用 DotNetOpenAuth 来完成这个(或类似的事情),但我遇到的每个示例都以“用户被重定向到登录页面”开头。我只需要“2 腿”身份验证。

是否有使用 DotNetOpenAuth 执行此操作的示例?

有更好的方法吗?

4

1 回答 1

5

如果您正在查看 OAuth 2,那么您所描述的流程是Client Credentials Grant

这种“双腿”/“服务帐户”类型的流程没有基于网页的流程。

DotNetOpenAuth 支持客户端凭据授予。你可以在这里看到它的一个例子;但是,请注意,即使作者声明它是“资源所有者密码凭据”授权,它实际上是客户端凭据授权。

上面的博客文章与最新的 DotNetOpenAuth 代码库有点不协调,但这些代码很快就被识别和更改了。

我相信,就目前而言,DotNetOpenAuth 仅支持使用 Http Basic 身份验证发布承载令牌。还有其他更奇特的扩展 OAuth 2 具有类似的流程,例如用于 OAuth 2.0 客户端身份验证和授权授予的 JSON Web 令牌 (JWT) 配置文件(但如上所述,这还不是 DotNetOpenAuth 的一部分)。

于 2013-05-16T08:49:57.813 回答