通过iOS深层链接传递身份验证令牌是否安全?

tim*_*imh 6 security authentication ios

我正在设计一个webapp/mobileapp安全流程,其中没有密码,只有通过短信发送到手机的身份验证令牌.这有什么缺陷?

计划:

  • 电话接收带有嵌入式邀请令牌的短信链接 http://domain.com/invite/ABCD
  • 用户点击,转到Web应用程序,要求用户安装移动应用程序(通过深层链接,传递相同的令牌 myapp://invite/ABCD
  • 加载应用程序时,邀请令牌ABCD被发送到服务器并交换为a auth token和a session token.
  • Auth token 永久存储在应用程序的本地存储中.
  • Session token用于连续的api调用并且有效24小时,然后Auth token将再次用于交换新的session token

                                                                +---+
                                                                |   |
+---------+ <---------------------------------------------------+   |
| Invite  |                                                     | S |
| Link    |                               send invite           | E |
| rec'd   |   +---------+   +--------+    token                 | R |
| via     |   |WebApp:  |   |        +----------------------->  | V |
| SMS     |   |deep     |   | ios App|                          | E |
|         +-> |linked   +-> |        |   receiv auth &          | R |
| (token) |   |to mobile|   |        |   session token          |   |
+---------+   |app      |   |        | <----------------------+ |   |
              |(install)|   |        |                          |   |
              |         |   |        |  use session token       |   |
              |         |   |        |  for all api calls       |   |
              +---------+   +--------+ +--------------------->  +---+
Run Code Online (Sandbox Code Playgroud)

问题:

  • 通过深层链接传递令牌是否安全?
  • 查看此方案的任何其他缺陷?
  • 是否需要auth/session组合?理由是会话在24小时后到期,因为它更多地通过网络暴露,但是因为它超过了ssl,也许我只需要一个永久存储的auth令牌,也用于api auth?

Phi*_*sby 0

看起来应该可以,但要注意你的用户体验。您不希望人们共享链接并进行未经授权的登录,而不是将其视为私人密码。让您的邀请链接仅可用一次将使它们类似于 Slack 使用的“Magic Link”模式,但是我会避免将其称为“邀请”,因为这些往往是您会给予其他人的东西。