c# - 使用 DotNetOpenAuth 实现 API key

标签 c# authentication oauth asp.net-web-api dotnetopenauth

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

我将为这些服务使用 WebAPI。

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

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

但是,我不希望任何人过来调用我的服务。

因此,我了解了 OAuth,以及它如何使用共享 key 来签署每个请求,我认为这就是我所追求的。 (我会设置一个 session key ,或者可以考虑将其中一个参数设置为“滴答”值,并且只接受短时间内的请求等)

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

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

还有更好的方法吗?

最佳答案

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

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

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

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

我认为 DotNetOpenAuth 目前只支持使用 Http Basic 身份验证颁发 Bearer token 。还有其他更奇特的扩展 OAuth 2 具有类似的流程,例如JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants (但如前所述,这还不是 DotNetOpenAuth 的一部分)。

关于c# - 使用 DotNetOpenAuth 实现 API key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16575365/

相关文章:

c# - 使用 itextsharp 在现有 pdf 中插入文本

angular - 使用 Auth0 在 JWT 中包含 user_metadata 和 app_metadata

performance - 现在 SSL 会影响性能吗?

oauth - Socialauth、Scribe-Java 和 Spring Social 之间的主要区别是什么?

api - 无法弄清楚如何查询 Bing/Azure Marketplace API

c# - 通过代理使用 KeyVaultClient

c# - 如何为验证属性提供本地化验证消息

c# - ContinueWith() 直到主机进程结束才执行

ios - 使用 Parse 登录删除 iOS 中的用户

python - 使用 Oauth 对 Gmail 进行身份验证后,有没有办法获取您的电子邮件地址?