在ASP.NET WebApi中实现移动应用程序的外部身份validation2

我正在尝试构建一个API(使用ASP.NET WebApi),该API将由本机移动应用程序用于学校项目。 (我不关心/开发移动应用程序,这个责任属于不同的成员)我正处于需要实现基于令牌的Facebook登录的地步。 有很多教程可用于如何为基于浏览器的应用程序实现此function(这是非常直接的,其中大部分是内置的),但我不认为我遵循如何使用本机应用程序。 我不明白重定向是如何工作的?

根据此链接 ,我的服务器无需专门处理任何内容。 我不认为我明白这是如何工作的? 如何处理来自Facebook的令牌?

此外,我应该实现令牌处理的哪个部分,我无法找到WebApi外部登录身份validation的良好文档。

无论如何,如果有人能指出我发生的令牌交换的确切流程以及ASP.NET默认实现的内容,那将是非常有用的。

此外,对我来说最大的困惑是我不明白Facebook将返回的令牌将如何处理。

  1. 我假设令牌将返回给客户端(移动应用程序),如何在我的服务器上访问它?
  2. 如何从facebook的令牌创建本地令牌? 这一切都是由ASP.NET内部/自动魔术完成的吗?

对不起,如果这是我应该弄明白的话。 我做了很多研究,发现自己陷入了(相关和无关)的信息。 我不认为我甚至不知道如何搜索我需要的信息。

我读过的一些链接:

声明和基于令牌的身份validation(ASP.NET Web API)

使用ASP.NET Web API 2,Owin和Identity进行基于令牌的身份validation

在AngularJS应用程序中使用Facebook和Google进行ASP.NET Web API 2外部登录

对于我正在处理的应用程序,我必须做同样的事情。 我也很难找到有关它的信息。 似乎我发现的一切都接近我所需要的,但不完全是解决方案。 我最后从一堆不同的博客文章,文章等中获取点点滴滴,然后将它们放在一起以使其工作。

我记得你在“AngularJS应用程序”中发布的“声明和基于令牌的身份validation”和“ASP.NET Web API 2与Facebook和Google的外部登录”中的两个链接是有用的信息。

我不能给你一个全面的答案,因为我不记得我必须做的一切,也不理解我当时所做的一切,但我可​​以给你一般的想法。 你走在正确的轨道上。

基本上我最终使用Facebook授予的令牌来确认他们已登录到他们的Facebook帐户,根据他们的Facebook用户ID创建用户,并授予他们可用于访问我的API的我自己的持票人令牌。

流程看起来像这样:

  1. 客户端通过任何方法使用Facebook进行身份validation(我们使用oauth.io )
    • Facebook向他们返回一个令牌
  2. 客户端将令牌信息发送到我的WebApi控制器的注册端点
    • 使用Facebook的Graph APIvalidation令牌,该API返回用户信息
    • 通过ASP.NET Identity在数据库中创建用户,并以Facebook用户ID为关键
  3. 客户端将令牌信息发送到WebApi控制器的身份validation端点
    • 使用Facebook的Graph APIvalidation令牌,该API返回用户信息
    • 用户信息用于在数据库中查找用户,确认他们之前已注册
    • ASP.NET Identity用于为该用户生成新令牌
    • 该令牌将返回给客户端
  4. 客户端在所有未来的HTTP请求中都包含一个Authorization标头,其中包含我的服务授予的新令牌(例如“Authorization:Bearer TOKEN ”)
    • 如果WebApi端点具有[Authorize]属性,则ASP.NET Identity将自动validation承载令牌,如果无效则拒绝访问

最终有很多自定义代码用于使用ASP.NET标识实现OAuth,并且您包含的那些链接向您展示了一些。 希望这些信息对你有所帮助,对不起我帮不了多忙。