【发布时间】:2017-05-18 09:22:21
【问题描述】:
我正在设计一个 webapp/mobileapp 安全流程,其中没有密码,只有一个通过短信发送到手机的身份验证令牌。这其中有什么缺陷?
计划:
- 手机收到带有嵌入邀请令牌的短信链接
http://domain.com/invite/ABCD - 用户点击,转到要求用户安装移动应用程序的网络应用程序(通过深层链接,它传递相同的令牌
myapp://invite/ABCD - 加载应用时,邀请令牌
ABCD被发送到服务器并交换为auth token和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 | |
+---------+ +--------+ +---------------------> +---+
问题:
- 通过深层链接传递令牌是否安全?
- 发现此方案的任何其他缺陷?
- 甚至需要身份验证/会话组合吗?基本原理是会话过期 24 小时,因为它通过网络暴露更多,但由于它通过 ssl,也许我只需要一个永久存储并用于 api 身份验证的身份验证令牌?
【问题讨论】:
标签: ios security authentication