使用DotNetOpenAuth实现API密钥
本文关键字:密钥 API 实现 DotNetOpenAuth 使用 | 更新日期: 2023-09-27 18:13:52
我需要为我们将托管的一些web服务实现身份验证。我想使用开放标准,所以我对OAuth很感兴趣。
我将为这些服务使用WebAPI。
所以这就是我遇到麻烦的地方:我读过的大多数(或所有)Api Key/OAuth场景都涉及(在某些时候或其他时候)用户坐在屏幕前。
我需要把一个业务合作伙伴将调用的API放在一起。呼叫将来自一个自动化的过程——链中没有一个人可以被重定向到具有登录凭据的网站。
但是,我不希望随便一个人跑来找我的服务。
我读了关于OAuth,以及它如何使用共享秘密来签署每个请求,我想那就是我想要的。(我可以设置会话密钥,或者可以考虑将其中一个参数设置为"tick"值,并且只接受短时间内的请求,等等)
我有点希望我可以使用DotNetOpenAuth来完成这一点(或类似的东西),但我遇到的每个例子都以"用户被重定向到登录页面"开始。我只需要"两条腿"的认证。
是否有使用DotNetOpenAuth的例子来做到这一点?
有更好的方法吗?
如果你看的是OAuth 2那么你描述的流程就是客户端凭证授予
这种"两腿"/"服务帐户";Type flow是一种没有网页流的类型。
DotNetOpenAuth支持客户端证书授予。你可以在这里看到一个实际的例子;然而,要注意,即使作者声明它是"资源所有者密码凭证"。它实际上是Client Credentials grant .
上面的博客文章与最新的DotNetOpenAuth代码库有点不一致,但这些都很快被识别和修改。
我认为,就目前而言,DotNetOpenAuth只支持使用Http基本身份验证发布承载令牌。还有其他更奇特的扩展OAuth 2具有类似的流程,例如用于OAuth 2.0客户端身份验证和授权授予的JSON Web令牌(JWT)配置文件(但如上所述,这还不是DotNetOpenAuth的一部分)。