asp.net-mvc - 基于 MVC 的 API - 如何实现 OAuth?

标签 asp.net-mvc api oauth dotnetopenauth

我已经尝试了几个小时来让 OAuth 使用我正在开发的 API 进行工作,显然我的方法一定是错误的,因为我经常遇到死胡同。

我得到了什么:
- 在 .NET MVC 中实现的 API,它以 XML 或 JSON 形式返回数据结果。
- 它需要一个 API key 才能使用 API。
- 一个网站 (X) 作为管理 API key 的后端。
- 另一个网站 (Y),其中包含该 API 从中提取数据的大量数据。

我应该得到什么:
- 允许 API key 从网站 (Y) 访问用户数据的能力,如果他们自己通过 OAuth (1.0A) 允许的话。

我试过的:
- 到目前为止,我的方法一直是使用 DotNetOpenAuth 库,但它几乎都是关于如何实现 OpenId,OAuth 命名空间中的一些类甚至似乎对 OpenId 功能进行了硬编码。所以我一直在尝试查看使用 OpenId 的示例中发生了什么,看看我是否可以使用其中的一部分来实现没有 OpenId 的 OAuth。
- 在服务器端,各种方法包括读取“UnauthorizedTokenRequest”并通过调用 ServiceProvider.Channel.PrepareResponse(unauthorizedTokenRequest).AsActionResult() 将其返回,出于某种原因,它会尝试将 nonce 和 timestamp 两个值添加到崩溃的响应,并跳过它,它仍然返回我无法在客户端读取的响应。

所以我想,我的问题真的是:

  • 是否有指南/文档告诉您我应该在服务器端使用 DotNetOpenAuth 库的哪些部分,以及在此过程中应该在何时使用它们,以便在未硬编码为 OpenId 的 MVC 服务器上实现 OAuth,因为两个网站(X 和 Y)都不支持 OpenId?
  • 如果我不打算使用 OpenId,我是否应该使用另一个库,因为 DotNetOpenAuth 似乎最关注的是?
  • 任何其他更适合我需要的方法都非常受欢迎。

  • 先感谢您!
    - 约翰尼,丹麦

    最佳答案

    DotNetOpenAuth 支持 OpenID、OAuth 和 InfoCard 一起使用和单独使用。听起来您正在构建的内容符合 DotNetOpenAuth 示例“OAuthServiceProvider”所展示的内容。确实,该示例使用 OpenID 来登录用户,但您可以完全忽略示例中的 login.aspx 页面,从而与 OpenID 完全分离。完全支持使用没有 OpenID 的 OAuth。

    OAuth 类中的几个与 OpenID 相关的方法只是为了支持 OpenID 的“OpenID+OAuth”扩展,它不适用于您的情况,因此您可以忽略它们。

    关于您看到的两次添加的 nonce 问题,有时会发生服务提供商不恰本地有两个模块验证传入的 OAuth 请求,每个模块都验证 nonce,因此第二个模块总是拒绝每个请求。您可能会检查这是否导致您的问题。否则,请查看未更改的示例是否适合您,如果可以,请将其与您正在做的事情进行比较,看看可能出了什么问题。 Activating logging也经常有帮助。

    关于asp.net-mvc - 基于 MVC 的 API - 如何实现 OAuth?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6454272/

    相关文章:

    c# - JavaScript 错误 : conditional compilation is turned off in MVC2 View

    javascript - 在 jQuery 中使用模型中的 bool

    api - 彭博 API : How to get the list of Pricing Sources?

    json - 您如何在 REST 中对复杂操作进行建模?

    c# - C# 安装应用程序中的 Google OAuth 2.0 身份验证

    java - 使用 Swift 启动轻量级 Web 服务器以在 iOS App 中接收 OAuth1.0 回调

    ios - TWTRLogInButton 不提供 OAuth 流程

    asp.net-mvc - MVC - 在同一 Controller 中具有相同名称和参数的 GET 和 POST 操作

    asp.net-mvc - 在 ASP .NET MVC 中编辑和更新 Entity Framework 实体

    ios - 有没有办法通过 Apple 后端的一些 API 导出应用商店应用内支付?