在多层体系结构中处理身份验证

时间:2016-10-30 09:09:36

标签: android iphone api authentication web-applications

我正在编写一个API,它将由webapplication和本机iPhone和Android应用程序使用。

用户将通过Web应用程序或本机应用程序创建帐户,登录,注销等。但是所有的业务逻辑都在API中。因此,Web应用程序和本机应用程序大多是仅包含用于与api集成的UI的薄层。

问题:

当您拥有Web应用程序或本机应用程序的外层时,用于根据API对用户进行身份验证的一般方法/技术是什么。

相关问题

Authenticating users in iPhone app

3 个答案:

答案 0 :(得分:3)

你应该看看

  1. OpenID
  2. 的OAuth
  3. 并设置了Identity Server。 取决于您使用的是哪种技术,IdentityServer可以广泛使用 一个是.net平台上的IdentityServer4

    请不要犹豫,多问一下! :d

答案 1 :(得分:3)

披露:我在Auth0工作。

令牌!令牌!令牌!

在Web API中对用户进行身份验证的最常用方法是使用基于令牌的身份验证。该程序可以简化为以下步骤:

  1. 客户端应用程序在请求中包含一个令牌(Authorization标题)。
  2. Web API验证令牌,如果有效,则根据与令牌关联的信息处理请求。
  3. 这种类型的令牌通常被称为承载令牌,因为应用程序必须唯一能够访问受API保护的资源才能提供令牌。使用HTTPS进行此类身份验证至关重要,以确保攻击者在从客户端到服务器时无法轻松捕获令牌。

    令牌可以进一步分类为:

    • 按值标记 - 关联信息包含在标记本身
    • 按引用令牌 - 关联信息保存在服务器端存储上,然后使用令牌值作为密钥找到

    用于按值令牌的流行格式是JWT格式(Get Started with JSON Web Tokens),因为它以Web友好的方式编码,并且还具有相当简洁的表示,以减少线路上的开销。

    在按值或按引用令牌之间进行选择是考虑每种方法的优缺点并审查您可能具有的任何特定要求。如果您使用JWT,请查看jwt.io以获取有关支持此格式的库的广泛技术参考。

    我的应用程序如何首先获得令牌?

    设置API以使用令牌对用户进行身份验证可以被视为最简单的部分,尽管仍需要考虑所有常用的安全预防措施。

    基于令牌的身份验证系统的最大问题是建立一个系统,可以向您的不同客户端应用程序发出令牌,这些应用程序可能使用不同的技术或处于完全不同的平台。

    正如另一个答案中所提到的,答案是依靠OAuth 2.0OpenID Connect协议并执行以下操作之一:

    • 实施符合上述协议的身份提供者/授权服务器系统
      耗时且复杂,但您遵循标准,因此您不太可能陷入困境,并且您还将获得互操作性

    • 将身份验证委派给第三方身份验证提供程序,如Auth0
      易于上手,具体取决于使用量(Auth0 goes up to 7000 users上的免费计划),这将花费您的金钱而不是时间

      < / LI>

答案 2 :(得分:1)

我同意@Fabian Bettag和@WickStargazer。

您可以使用OAuth 2.0,它可以很好地与网络应用,移动客户端和Java脚本客户端配合使用。您还可以使用OpenID Connect根据授权服务器执行的身份验证来验证最终用户的身份,以及在可互操作和类似REST的情况下获取有关最终​​用户的基本配置文件信息方式。 OpenID Connect 1.0OAuth 2.0协议之上的简单身份图层。

注意: - 您还可以实施SOAP登录,注册和注销(安全敏感API),为您的应用添加更多安全性。

希望这会有所帮助,让我知道任何帮助。快乐的编码!!!