使用DotNetOpenAuth实现API密钥

JMa*_*sch 1 c# authentication oauth dotnetopenauth asp.net-web-api

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

我将使用WebAPI来提供这些服务.

所以这就是我遇到麻烦的地方:我读过的大部分(或者全部)Api Key/OAuth场景涉及(在某些时候)坐在屏幕前的用户.

我需要整理一个业务合作伙伴将要调用的API.这些呼叫将来自一个自动化过程 - 链中没有任何人可以被重定向到具有登录凭据的网站.

但是,我不希望任何人出现并致电我的服务.

所以,我读到了OAuth,以及它如何使用共享密钥签署每个请求,我认为这就是我所追求的.(我要么设置会话密钥,要么考虑将其中一个参数设为"滴答"值,并且只在短时间内接受请求等)

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

有没有使用DotNetOpenAuth这样做的例子?

还有更好的方法吗?

Mar*_*nes 5

如果您正在查看OAuth 2,那么您描述的流程是客户端凭据授予

这种"两条腿"/"服务帐户"类型流程是没有基于网页的流程的流程.

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

上面的博客文章与最新的DotNetOpenAuth代码库略有不同,但这些代码库很快被识别和修改.

我相信,DotNetOpenAuth只支持使用Http Basic身份验证发出Bearer令牌.还有其他更具异国情调的扩展OAuth 2具有类似的流程,例如用于OAuth 2.0客户端身份验证和授权授权的JSON Web令牌(JWT)配置文件(但如上所述,这还不是DotNetOpenAuth的一部分).