Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为我的API实现OAuth 2.0身份验证_C#_.net_Oauth 2.0_Oauth Provider - Fatal编程技术网

C# 为我的API实现OAuth 2.0身份验证

C# 为我的API实现OAuth 2.0身份验证,c#,.net,oauth-2.0,oauth-provider,C#,.net,Oauth 2.0,Oauth Provider,我已经成功使用Facebook Graph API(使用oauth 2.0进行身份验证)一段时间了。我现在需要编写自己的API,允许开发人员以类似的方式连接到它。我研究过各种图书馆,但我想找一些更精简的,所以我决定自己动手。看看我必须在facebook上验证用户身份的代码,它看起来相对简单,但如果我偏离了正轨,请纠正我 首先,我需要提供一个消费者需要重定向到的安全页面。如。用户将验证应用程序,然后我将重定向回回调url中提供的url,查询字符串中带有oauth_标记。我想我可以在这里为oauth

我已经成功使用Facebook Graph API(使用oauth 2.0进行身份验证)一段时间了。我现在需要编写自己的API,允许开发人员以类似的方式连接到它。我研究过各种图书馆,但我想找一些更精简的,所以我决定自己动手。看看我必须在facebook上验证用户身份的代码,它看起来相对简单,但如果我偏离了正轨,请纠正我

首先,我需要提供一个消费者需要重定向到的安全页面。如。用户将验证应用程序,然后我将重定向回回调url中提供的url,查询字符串中带有oauth_标记。我想我可以在这里为oauth_令牌生成一个随机唯一字符串,并针对该特定消费者的用户存储它(编辑:请参见下面的答案,这对于每个消费者应用程序而不是用户来说应该是唯一的)

这是第一步。我现在需要提供第二个安全页面,消费者将触发一个web请求。如。这将允许使用者将上面返回的oauth_令牌交换为访问令牌。我将再次简单地生成一个随机唯一字符串,并针对这个特定消费者的用户存储它

现在,我的API将接受access_令牌,用于尝试获取特定于使用它的用户的信息的方法

我想知道我是否理解正确。如果是这样的话,OAuth2.0规范看起来非常微不足道。还有,为什么我们必须将oauth_令牌与access_令牌交换?我有自己的想法,但如果有人能帮我澄清这一点,我将不胜感激

我真的很感谢你的反馈,因为我不想在完全错误的情况下继续和浪费时间来实现这一点


谢谢

事实上,协议流程图对于可视化OAuth 2这样的规范非常有用,但是只有一些部分工作。由于我刚刚实现了一个只有客户端的OAuth 2库,因此我可以验证您是否走上了正确的道路。但这里有一个陷阱:

oauth_令牌属于您的客户端应用程序(即桌面facebook阅读器),它对您的应用程序进行身份验证(就像ID一样)。提交此项以获取访问令牌,该令牌特定于您的应用程序和登录用户,允许您访问与该用户相关的受限资源

下面是一个基本的桌面应用程序身份验证过程(摘自:)

实际上是一个带有时间线的流程图(从上到下,取自:)

最后,完整的程序是:(摘自)