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

Is it safe to pass auth token via iOS deep link?

提问人:timh 提问时间:1/4/2017 更新时间:2/14/2019 访问量:2087

问:

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

计划:

  • 手机收到带有嵌入式邀请令牌的短信链接 http://domain.com/invite/ABCD
  • 用户点击,转到要求用户安装移动应用程序的 Web 应用程序(通过深层链接,传递相同的令牌myapp://invite/ABCD
  • 加载应用程序时,邀请令牌将发送到服务器并交换为 an 和 a 。ABCDauth tokensession token
  • Auth token永久存储在应用程序的本地存储中。
  • Session token用于连续的 API 调用,有效期为 24 小时,然后将再次用于交换新的Auth tokensession 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       |   |
              +---------+   +--------+ +--------------------->  +---+

问题:

  • 通过深度链接传递令牌是否安全?
  • 看到此方案的任何其他缺陷了吗?
  • 甚至需要身份验证/会话组合吗?理由是会话过期 24 小时,因为它在网络上暴露得更多,但由于它通过 ssl,也许我只需要一个永久存储并用于 api 身份验证的身份验证令牌?
IOS 安全 认证

评论


答:

0赞 Philihp Busby 2/14/2019 #1

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