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

kcrjzv8t  于 2024-01-04  发布在  Android
关注(0)|答案(3)|浏览(154)

我正在编写一个API,它将被Web应用程序和原生iPhone和Android应用程序使用。
用户将通过Web应用程序或本地应用程序创建帐户,登录,注销等。但所有的业务逻辑都在API中。因此,Web应用程序和本地应用程序大多是只包含UI的薄层,以与API集成。

问题:

当你有一个Web应用程序或一个本地应用程序的外层时,有哪些通用的方法/技术用于根据API对用户进行身份验证。

  • 相关问题 *

Authenticating users in iPhone app

qcbq4gxm

qcbq4gxm1#

代币代币代币
在Web API中对用户进行身份验证的最常用方法是使用基于令牌的身份验证。该过程可简化为以下步骤:
1.客户端应用程序在请求中包含一个令牌(Authorization标头)。

  1. Web API验证令牌,如果有效,则根据与令牌相关联的信息处理请求。
    这种类型的令牌通常被称为承载令牌,因为应用程序要访问受API保护的资源,唯一需要做的就是提供令牌。使用HTTPS和这种类型的身份验证是至关重要的,以确保令牌在从客户端到服务器的过程中不会被攻击者轻易捕获。
    代币可以进一步分类为:
  • 按值令牌-关联信息包含在令牌本身中
  • 按引用标记关联的信息保存在服务器端存储器上,然后使用标记值作为键找到该存储器

用于按值令牌的流行格式是JWT格式(Get Started with JSON Web Tokens),因为它以Web友好的方式编码,并且具有相当简洁的表示,以减少线路上的开销。
在按值或按引用令牌之间进行选择是一个考虑每种方法的优缺点并查看您可能具有的任何特定要求的问题。如果您使用JWT,请查看jwt.io以参考支持这种格式的库,这些库跨越各种技术。

我的应用首先是如何获取token的?

设置API以使用令牌对用户进行身份验证可以被视为最简单的部分,尽管仍然需要考虑所有常见的安全预防措施。
基于令牌的身份验证系统的最大问题是建立一个系统,该系统可以向可能使用不同技术或完全不同平台的不同客户端应用程序颁发令牌。
正如在另一个答案中提到的,这个问题的答案是依赖于OAuth 2.0OpenID Connect协议,并执行以下操作之一:

  • 实施符合上述协议的身份提供者/授权服务器系统

    **节省时间 * 耗时且复杂,但您遵循标准,因此不太可能出错,并且还将获得互操作性 *

  • 将身份验证委托给第三方身份验证提供程序,如Auth0

    **免费 * 容易上手,具体取决于使用量(Auth 0 goes up to 7000 users上的免费计划),它将花费您的金钱而不是时间 *

展开查看全部
ffx8fchx

ffx8fchx2#

你应该看看

  1. OpenID
  2. OAuth
    并设置Identity Server。根据您使用的技术,IdentityServer广泛可用,其中一种是.net平台上的IdentityServer4
    请不要犹豫,问更多!:D
ckocjqey

ckocjqey3#

我同意@Fabian Bettag和@WickStargazer的观点。
您可以使用OAuth 2.0,它可以很好地与web应用程序,移动的客户端和java-script客户端配合使用。您还可以使用OpenID Connect根据授权服务器执行的身份验证来验证最终用户的身份,以及以可互操作和类似REST的方式获取有关最终用户的基本配置文件信息。* OpenID Connect 1.0OAuth 2.0协议之上的简单身份层。*

**注意:-**您还可以实现SOAP用于登录,注册和注销(安全敏感API),以增加应用的安全性。

希望这将有助于并让我知道任何帮助。快乐编码!

相关问题