移动和Web用户的身份验证/授权架构

Kev*_*ott 7 architecture authentication mobile authorization web-services

这对我来说似乎是一个反复出现的问题,因为我似乎在过去几年里都倾向于移动应用程序.除了网络用户,我还要对移动用户进行身份验证和授权.我需要使其足够无缝,以便用户可以轻松拥有一个Web帐户,而不会中断他们的数据.我希望解决方案在主题中是架构,而不是特定于任何语言/框架.

要求/假设

  1. 移动用户必须能够在没有登录的情况下使用本机应用程序,包括提供内容(标记收藏夹,上传照片等).
  2. 即使没有指定帐户凭据,移动用户也应该安全且唯一地对Web服务进行身份验证.
  3. 移动用户可能拥有多个设备,这些设备彼此之间并不知情.
  4. 移动用户应该能够注册/登录,这应该将任何内容卷入帐户的所有权.随后登录的每个帐户都应该发生"同步".
  5. 是否在移动设备或网络上创建帐户无关紧要.

考虑的架构

  1. 没有衬衫,没有鞋子,没有登录=没有贡献.要求登录以提供任何类型的内容.这可以防止需要将设备帐户与主帐户"同步".只需要一个用户名/密码+令牌即可登录设备.服务器对象:用户,角色
  2. 多设备自我认证.服务器与设备协商并交付设备存储的凭据.在注册/登录发生之前,每个设备都会自我验证并与匿名帐户关联.如果发生注册,匿名帐户将转换为已知帐户.如果发生登录,则匿名帐户中的内容将移至已知帐户,然后被丢弃.丢失自我身份验证详细信息的设备将获得新的身份验证详细信息,之前的匿名帐户将被放弃(然后希望稍后被丢弃)并且无法恢复,因为它从未转换为已知帐户.服务器对象:用户,角色,设备

您认为什么是好的解决方案?其中之一,还是其他什么?

Lex*_*Lex 0

作为基本决策,2 号已经足够好了。用户讨厌注册;)因此无需注册即可使用服务是个好主意。

您可以使用 GUID/UUID 来识别设备。并在用户登录之前将其用作匿名登录。

但是,如果 2 个(或更多)人使用 1 台设备怎么办?或者设备会丢失、被盗?我认为没有任何一点涵盖这些情况。

我不知道您构建了哪种 Web 服务,因此无法提供更多建议。