我得到了什么:
– 在.NET MVC中实现的API,它将数据结果作为XML或JSON返回.
– 它需要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
解决方法
OAuth类中的几个OpenID相关方法仅用于支持OpenID的“OpenID OAuth”扩展,这不适用于您的情况,因此您可以忽略它们.
关于您看到的两次添加的nonce问题,有时会发生服务提供商不恰当地有两个模块验证传入的OAuth请求,每个模块验证nonce,因此第二个模块总是拒绝每个请求.您可以检查是否是导致您的问题.否则,查看未更改的样本是否适合您,如果是,请将其与您正在执行的操作进行比较,以查看可能出现的问题. Activating logging也经常帮助.