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

2024-01-28

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

根据这个link http://www.azurefromthetrenches.com/how-to-using-facebook-to-authenticate-with-web-api-2-in-a-native-mobile-application/,我的服务器不需要专门处理任何事情。我想我不明白这是如何运作的? Facebook 的代币将如何处理?

另外,我应该实现令牌处理的哪一部分,我无法真正找到有关 WebApi 外部登录身份验证的良好文档。

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

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

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

如果这是我应该能够弄清楚的事情,我很抱歉。我确实做了很多研究,发现自己淹没在(相关和不相关)信息中。我想我什至不知道如何搜索我需要的信息。

我读过的一些链接:

基于声明和令牌的身份验证 (ASP.NET Web API) http://www.codeproject.com/Tips/821772/Claims-And-Token-Based-Authentication-ASP-NET-Web

使用 ASP.NET Web API 2、Owin 和 Identity 进行基于令牌的身份验证 http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/

ASP.NET Web API 2 在 AngularJS 应用程序中使用 Facebook 和 Google 进行外部登录 http://bitoftech.net/2014/08/11/asp-net-web-api-2-external-logins-social-logins-facebook-google-angularjs-app/


对于我正在开发的应用程序,我必须做几乎同样的事情。我在寻找相关信息时也遇到了很多麻烦。似乎我发现的所有内容都接近我所需要的,但并不完全是解决方案。我最终从一堆不同的博客文章、文章等中收集了一些零散的内容,并将它们放在一起以使其发挥作用。

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

我无法给你一个全面的答案,因为我不记得我必须做的所有事情,我什至也不明白我当时在做什么,但我可以给你一个大概的想法。你走在正确的轨道上。

本质上,我最终使用 Facebook 授予的令牌来确认他们已登录 Facebook 帐户,根据他们的 Facebook 用户 ID 创建用户,并授予他们我自己的不记名令牌,他们可以使用该令牌来访问我的 API。

流程看起来像这样:

  1. Client authenticates with Facebook via whatever method (we used oauth.io https://oauth.io)
    • Facebook 向他们返回一个令牌
  2. Client sends token information to the registration endpoint of my WebApi controller
    • 该令牌使用 Facebook 的 Graph API 进行验证,该 API 返回用户信息
    • 通过 ASP.NET Identity 在数据库中创建用户,并将其 Facebook 用户 ID 作为密钥
  3. Client sends token information to the authentication endpoint of my WebApi controller
    • 该令牌使用 Facebook 的 Graph API 进行验证,该 API 返回用户信息
    • 用户信息用于在数据库中查找用户,确认他们之前已经注册过
    • ASP.NET Identity 用于为该用户生成新令牌
    • 该令牌返回给客户端
  4. Client includes an Authorization header in all future HTTP requests with the new token granted by my service (ex. "Authorization: Bearer TOKEN")
    • 如果WebApi端点具有[Authorize]属性,ASP.NET Identity将自动验证不记名令牌,如果无效则拒绝访问

最终出现了大量用于使用 ASP.NET Identity 实现 OAuth 内容的自定义代码,您所包含的那些链接向您展示了其中的一些内容。希望这些信息能给您带来一点帮助,很抱歉我无法为您提供更多帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 回发或回调参数无效。使用“”启用事件验证

    当我从客户端回发页面时 出现以下错误 我有修改客户端 asp ListBox 的 JavaScript 代码 我们该如何解决这个问题 错误详细信息如下 Server Error in XXX Application Invalid post
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 如何防止 ASP.NET 站点的图像盗链?

    防止人们从我的托管 ASP NET 网站热链接到图像的最佳 最简单方法是什么 我不需要防止所有图像 资源被热链接 我只是想防止热链接到网站上的特定图像 资源 供参考 它托管在 GoDaddy com 上 因此 IIS 技巧可能不起作用 最简
  • 如何从代码隐藏文件中的asp.net用户控件注册(调用)jQuery函数?

    如何从代码隐藏文件中的asp net用户控件注册 调用 jQuery函数 您可以使用ClientScriptManager RegisterStartupScript http msdn microsoft com en us librar
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 如果方法参数是 string 或 int,ASP.NET WebAPI 会抛出 404

    我对 ASP NET MVC4 WebAPI 做了一个非常简单的测试 发现了一些有趣的问题 当一个方法采用复杂类型时 它会起作用 但是当它采用 string 或 int 时 它将抛出 404 如给出的屏幕截图所示 AddProduct 可以
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub

随机推荐