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

我一直在努力让OAuth继续使用我正在研究的API,显然我的做法一定是错的,因为我经常遇到死路一条.

我得到了什么:
  – 在.NET MVC中实现的API,它将数据结果作为XMLJSON返回.
  – 它需要API密钥才能使用API​​.
  – 用于管理API密钥的后端网站(X).
  – 另一个网站(Y),其中包含此API从中提取数据的大量数据.

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

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

所以我想,我的问题是:

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

先感谢您!
– 丹麦Johny

DotNetOpenAuth在一起使用和单独使用时支持OpenID,OAuth和InfoCard.听起来你正在构建的东西符合DotNetOpenAuth示例“OAuthServiceProvider”所展示的内容.是的,该示例使用OpenID来记录用户,但您可以完全忽略示例中的login.aspx页面,从而与OpenID完全分离.完全支持使用不带OpenID的OAuth.

OAuth类中的几个OpenID相关方法仅用于支持OpenID的“OpenID OAuth”扩展,这不适用于您的情况,因此您可以忽略它们.

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

相关文章
相关标签/搜索