使用DotNetOpenAuth实现API密钥

本文关键字:密钥 API 实现 DotNetOpenAuth 使用 | 更新日期: 2023-09-27 18:13:52

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

我将为这些服务使用WebAPI。

所以这就是我遇到麻烦的地方:我读过的大多数(或所有)Api Key/OAuth场景都涉及(在某些时候或其他时候)用户坐在屏幕前。

我需要把一个业务合作伙伴将调用的API放在一起。呼叫将来自一个自动化的过程——链中没有一个人可以被重定向到具有登录凭据的网站。

但是,我不希望随便一个人跑来找我的服务。

我读了关于OAuth,以及它如何使用共享秘密来签署每个请求,我想那就是我想要的。(我可以设置会话密钥,或者可以考虑将其中一个参数设置为"tick"值,并且只接受短时间内的请求,等等)

我有点希望我可以使用DotNetOpenAuth来完成这一点(或类似的东西),但我遇到的每个例子都以"用户被重定向到登录页面"开始。我只需要"两条腿"的认证。

是否有使用DotNetOpenAuth的例子来做到这一点?

有更好的方法吗?

使用DotNetOpenAuth实现API密钥

如果你看的是OAuth 2那么你描述的流程就是客户端凭证授予

这种"两腿"/"服务帐户";Type flow是一种没有网页流的类型。

DotNetOpenAuth支持客户端证书授予。你可以在这里看到一个实际的例子;然而,要注意,即使作者声明它是"资源所有者密码凭证"。它实际上是Client Credentials grant .

上面的博客文章与最新的DotNetOpenAuth代码库有点不一致,但这些都很快被识别和修改。

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