本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
GAMESEC03-BP02 对发送到游戏后端服务的请求进行身份验证
对发送到游戏后端服务的请求进行身份验证可以阻止不需要的请求成功。
在未建立这种最佳实践的情况下暴露的风险等级:高
实施指导
您应该为玩家登录提供身份验证服务,当玩家成功进行身份验证时,该服务应将安全的短期令牌(例如 JSON Web 令牌 (JWT))返回给游戏客户端。
这些代币可以包括包含玩家属性和其他相关元数据的索赔断言。这些相关的元数据可用于从游戏客户端发送到游戏后端的后续请求,以对请求进行身份验证,并在经过身份验证的玩家的上下文中对请求进行授权。
您可以选择设计和构建自己的玩家身份验证系统,这将需要持续的改进和维护,也可以使用 Amazon Cognito 提供的可扩展且安全的用户注册、登录和访问控制功能。
Amazon Cognito 用户池包括用于身份验证和授权的用户目录。用户池提供的 API 可以集成到游戏中,用于注册、登录和密码重置工作流程,这些工作流程可以与第三方身份提供商集成。应用程序负载均衡器和 Amazon API Gateway 都提供与 Cognito 的集成,以集成用户身份验证,以处理发送到由这些服务托管的自定义游戏后端的请求。
如果您的游戏支持匿名访问且您无法对玩家进行身份验证,则在与游戏后端集成时,您可以使用客户端身份验证方法来提供更安全的体验。如果您的游戏客户端直接使用 AWS 服务,则必须使用证书对这些服务的请求进行签名。要为未经身份验证的用户提供游戏客户端证书,您可以使用 AWS 软件开发工具包从 Amazon Cognito 身份池中检索可用于签署服务请求的短期证书。 AWS 这些凭证可以从您的游戏客户端刷新。
除了直接从游戏客户端与 AWS SDK 集成外,您还可以使用支持自定义授权的 Amazon API Gateway
有关为使用亚马逊托管的游戏构建后端服务的更多信息 GameLift,请参阅设计游戏客户端服务。
客户示例
AnyCompany 游戏采用托管身份验证和授权方法,增强了下一款游戏的安全性。他们没有维护自定义的用户名和密码系统,而是使用Amazon Cognito用户池来处理玩家的注册和登录,并使用身份池来支持在创建账户之前尝试训练模式的玩家进行匿名访问。他们还在游戏中实现了自定义授权逻辑,以识别 Cognito 中定义的管理员角色,从而授予这些用户使用特殊的游戏内管理功能的权限。
实施步骤
-
使用 Amazon Cognito 用户池使用 JWT 等安全令牌管理身份验证,启用注册、登录和密码重置等功能。
-
从 Amazon Cognito 身份池中检索短期证书,以便匿名用户安全地与 AWS 服务进行交互。
-
使用 Amazon API Gateway 实现自定义服务器端身份验证逻辑的自定义游戏后端。