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

Chr*_*urk 11 c# asp.net facebook login asp.net-web-api

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

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

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

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

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

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

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

我读过一些链接:

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

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

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

mat*_*man 11

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

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

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

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

流程看起来像这样:

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

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