我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
手机游戏的身份验证
简介
用户身份验证和授权是几乎所有应用程序的关键方面。特别是对于手机游戏而言,管理玩家的身份验证和授权可能会带来一些独特的挑战。其中一些挑战与移动设备本身的使用有关。其他挑战与保护现代手机游戏可能与之交互的许多后端系统有关,例如游戏服务器、社交网络和支付提供商。
这篇博文旨在确定其中一些挑战,并提供一些解决这些挑战的方法和良好实践。
身份验证和授权
首先,简要介绍一下身份验证和授权之间的区别。
身份验证(通常缩写为 AuthN)是确认用户或系统身份的行为。例如,通过使用用户名和密码登录、扫描指纹或使用面部识别。
授权(或 AuthZ)是确定与经过身份验证的身份关联的用户或系统具有哪些权限以及应允许还是拒绝他们执行的操作的过程。
手游身份验证挑战赛
我们在手机游戏中实现身份验证和授权时看到的一些常见挑战是:
- 匿名用户支持 :移动游戏通常允许匿名或未经认证的玩家无需创建帐户即可玩游戏。因此,游戏需要跟踪和控制未经身份验证的玩家的访问权限,如果玩家稍后创建账户,则将他们与经过身份验证的账户关联起来。
- 创建简单的注册流程 :填写表单或通过移动触摸屏提供大量用户数据可能会给新玩家带来摩擦,导致他们感到沮丧并完全放弃该流程。
- 离线身份验证 :移动设备可能并不总是具有互联网连接。在这种情况下,需要实现本地身份验证或授权支持的方法。
- 缓存证书 :需要谨慎使用本地缓存的证书,以确保未经授权不会被恶意访问。这些证书可用于执行不允许的操作,例如,直接访问游戏使用的 API。
- 客户端篡 改 :修改后的二进制文件可能会被黑客或作弊者用来获取安全证书并对游戏后端采取不必要的行动,或者在未经授权的情况下为自己奖励金币或游戏体验。
- 过时或不安全的加密技术 :许多移动设备运行过时的操作系统,这些操作系统不再接收安全更新。这可能导致设备加密不良或其他安全问题。
- 高峰或不可预测的玩家流量 :游戏发布、游戏内活动、手机游戏商店内的促销活动,甚至社交媒体活动都可能导致流量在短期内显著增加,这可能会暂时使身份验证服务不堪重负
身份验证和授权可能是一个复杂的话题。如果实施不当,会产生严重的后果,因此建议使用第三方身份即服务 (iDaaS) 来处理关键功能。下一节将探讨这方面的一些注意事项。
在身份验证解决方案中要寻找什么
从根本上讲,身份验证系统将为玩家的账户提供安全保障。解决方案必须支持现代加密机制,包括静态和传输中的数据。HTTPS 是必须的,你应该检查 TLS 版本(你不应该使用低于 TLS v1.2 的版本)。iOS 具有
身份验证系统应该为开发者和玩家提供良好的用户体验。注册、登录和重置密码应该很容易。对于Facebook、Twitter、Apple ID或其他平台而言,社交登录集成可以简化玩家的注册和登录流程,也是值得考虑的。
系统应具有可扩展性以满足峰值请求。如果你成功发布了游戏,或者某些活动吸引了大量用户(现有用户或新用户)访问你的游戏,你需要确信身份验证系统可以扩展以满足登录和注册需求。对于托管服务,请查看配额/API 限制;对于本地系统,考虑需要如何调整基础设施规模以满足峰值需求。为超出正常流量模式的高峰做好规划。例如,如果你的游戏被自然列入 Google Play 或 Apple App Store 新游戏或下载次数排行榜,这可能会导致玩家流量大幅增加。
如果你需要多平台支持,请寻找支持跨平台功能的系统,允许玩家在不同的设备上使用同一个账户。这包括审查有哪些 SDK 可用于 iOS 和安卓等平台以及 C# 和 JavaScript 等编程语言。
您还需要考虑要使用的身份验证流程。你需要使用身份验证码或设备授权等
查看系统的自定义选项。你可能想要建立一个自定义的注册或登录页面,或者使用系统提供的预建页面。它应该与其他保存相关玩家数据的系统集成,如果你需要自定义身份验证流程或外观和感觉,你应该考虑有哪些选项可用。
检查分析和报告功能,以了解您可以从玩家行为中获得哪些见解。你能否查看登录模式、识别可疑活动并使用这些信息来提高游戏的安全性?
确保您了解成本模型,并选择最适合您的预期销量的方案。有些选项允许您按实际使用量付费(例如,按登录/注销请求或按创建的帐户数量付费),而其他系统则需要前期投资。每个选项都有其优点和缺点。最合适的选择将取决于您的预算、预期交易量和风险偏好。
如果您需要遵守合规性要求,例如数据保护或年龄验证,请确保身份验证系统合规,或者允许您构建符合正确实施的解决方案。
良好做法
在规划手机游戏的身份验证和授权方法时,需要遵循的其他一些关键良好做法是:
-
利用应用程序商店本身提供的保护机制。谷歌提供
Play Integrity API ,苹果提供DeviceCheck ,你可以使用这两个接口来确保玩家使用的是真实的、未经修改的游戏二进制文件来访问你的后端服务器资源。 - 利用设备的硬件安全元素在本地存储任何加密机密或缓存的凭据。对于安卓系统,你应该使用 密钥库 ,对于 iOS,你应该使用 钥匙串 。
- 确保定期对后端服务进行身份验证。有时您可能需要信任缓存的身份验证凭据(例如,在用户没有互联网连接的情况下),但应避免长时间信任仅限本地的验证。
- 考虑对需要更高级别授权的操作(例如应用内购买或更改用户数据)使用双因素身份验证 (2FA)。这可能涉及向已知的电子邮件或电话号码发送验证码,以便用户进入游戏中。或者,你可以使用设备的生物识别功能(例如指纹或面部识别)来实现增强身份验证。
- OAuth 2.0 请求应通过外部用户代理(例如设备的浏览器)发出,而不是直接从游戏客户端发出。这可以防止主机应用程序(或任何修改过的应用程序)能够复制或提取用户凭据和 cookie,并减少了用户在使用的每个应用程序中单独进行身份验证的需求。
- 不要在身份验证令牌中存储任何个人身份信息 (PII)。令牌已签名但不一定加密,因此可以轻松读取。在代币中包含个人身份信息可能会导致敏感数据被无意中泄露。

图 1。身份验证流程示例
图 1 演示了高级身份验证流程。涉及的步骤如下:
- 移动应用程序的用户使用他们选择的身份提供商(例如谷歌、苹果、Facebook 或其他)进行身份验证,后者会返回令牌。
- 该令牌被发送到身份服务,身份服务会检查它们是否可信,如果是,则会向应用程序返回一个令牌,该令牌可用于将用户登录到应用程序。
- 或者,该令牌随后用于授权应用程序调用后端服务。
结论
总之,我们已经讨论了身份验证(确认身份的行为)和授权(提供资源访问权限)之间的区别。我们还探讨了手机游戏身份验证的主要挑战、在第三方身份验证解决方案中需要寻找的内容以及一些良好实践。
在本系列的下一篇博客文章中,我们将探讨如何使用 A
如需更多信息,请查看以下资源:
-
-
亚马逊云科技 架构完善的框架游戏行业镜头
身份和访问管理部分 -
亚马逊云科技 自定义游戏后端托管 指南 使用 A -
mazon Cognito 对游戏后端服务玩家进行身份验证
-
亚马逊云科技 架构完善的框架游戏行业镜头
博客作者:
-
- 卡尔·普雷斯科特 — 亚马逊云科技 游戏解决方案架构师
- 詹姆斯·汤普森 — 亚马逊云科技 高级解决方案 架构师
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。