身份验证
Cloud Code 仅接受经过身份验证的请求。
借助于身份验证,您可以使用玩家的身份来确保游戏中每次互动的安全性和一致性。
要向 Cloud Code 进行身份验证,您可以使用以下身份验证方法:
请求来源 | 身份验证方法 |
---|---|
不受信任的客户端(玩家) | 使用 Unity Authentication 服务。 |
受信任的客户端(游戏服务器、集成测试、本地计算机) | 使用服务帐户身份验证或 Game Server Hosting 身份验证。 |
对玩家进行身份验证
Unity Authentication 为玩家分配唯一标识符,并提供多种身份验证方法。
注意:Unity Authentication 可用于为支持的平台(包括移动端和 PC 端)提供匿名身份验证和特定于平台的身份验证解决方案。
Cloud Code 脚本提供了一个 context
对象,其中包含一个 accessToken
属性。这个访问令牌便是用于对调用该脚本的玩家进行身份验证的 JWT。
如需更多有关如何在脚本中使用 accessToken
的信息,请参阅访问令牌支持文档。
限制访问
如果要限制对特定脚本的访问,可以使用基于角色的访问控制 (RBAC) 规则。
通过这些规则,可以确保玩家无法运行特殊的脚本,例如向玩家授予额外资源的一次性支持脚本。如需了解更多信息,请参阅访问控制文档。
注意:为了安全起见,只能使用由 Unity Authentication 服务通过 Cloud Code Client API 生成的 JWT。如果您向 Cloud Code Admin API 发出这些调用,Cloud Code 服务会拒绝这些调用。
对受信任的客户端进行身份验证
对于服务帐户身份验证,Cloud Code Client API 和 Cloud Code Admin API 均可供使用。
因此,您可以通过多种方式使用 Cloud Code:
- 从本地计算机编写脚本。
- 从 CI/CD 管线编写和运行脚本。
- 从游戏服务器运行脚本。
- 在集成测试中运行脚本。
您可以将服务帐户用于持有者 (JWT) 身份验证和基本身份验证。如需了解更多信息,请查看服务帐户身份验证文档。
Cloud Code Admin API(基本身份验证)
要访问 Cloud Code Admin API,请使用基本身份验证。
要直接使用服务帐户凭据,请对 <KEY_ID>:<SECRET_KEY>
进行 base64 编码。您还需要向服务帐户授予适当的权限。如需详细了解 Cloud Code 中的权限和角色,请参阅下表。
访问权限 | 角色 |
---|---|
读取脚本 | Cloud Code Viewer(Cloud Code 查看者) |
读取/写入/删除脚本 | Cloud Code Editor(Cloud Code 编辑者) |
发布脚本 | Cloud Code Publisher(Cloud Code 发布者) |
Cloud Code Client API(持有者身份验证)
要访问 Cloud Code Client API,请使用持有者身份验证和 Token Exchange API 来获取有限生命周期的无状态令牌。
注意:尽管 Token Exchange API 声明环境 ID 的查询参数是可选参数,但您必须提供此 ID 才能访问 Cloud Code Client API 以运行脚本。
要在令牌过期时刷新令牌,可以使用相同的 API。
Cloud Code 脚本提供了一个 context
对象,其中包含一个 serviceToken
属性。serviceToken
属性是一个可用于以 Cloud Code 身份进行身份验证并访问跨玩家数据的 JWT。例如,可以使用此令牌调用 Cloud Save 以代表其他玩家保存数据。
如需更多有关如何在脚本中使用 serviceToken
的信息,请参阅服务令牌支持文档。
注意:只能使用 Token Exchange API 调用 Client API。无需在请求中指定任何作用域。
使用 Game Server Hosting 进行身份验证
Game Server Hosting (Multiplay) 还支持另一种使用服务器生成的 JWT 的身份验证方法。如需了解更多信息,请查看如何从 Unity 游戏服务器 (Multiplay) 进行调用。