使用网络播放器中的信任链系统

在本部分,您将学习如何创建和使用强名称程序集,连同 Javascript 一起,与自定义的后端进行交互。

信任链 (Chain of Trust) 系统允许外部互联网应用程序信任源于 Unity 网络播放器 (Web Player) 的请求。如果希望为 Unity 开发人员在 Unity 网络播放器 (Web Player) 中创建游戏提供 全功能 API,这点会比较有用。如需使用信任链 (Chain of Trust) 系统,必须拥有某种接受请求的互联网应用程序后端,最常见的是带 REST API 的网络应用程序。还要有一个托管 C# (Managed C#) 程序集,包含调用互联网应用程序的代码。

生成密匙对

建立信任链的第一步是创建程序集签名所需的加密密匙对。在 Windows、OS X 或 Linux 系统上使用 SN 工具进行。

  1. 要创建一个新密匙对,请打开命令行终端和类型:
    sn -k myNewKey.snk
  2. myNewKey.snk 替换为想要的密匙对文件名。从信任链 (Chain of Trust) 系统的角度来说,文件名无关紧要。
  3. 保证 .SNK 文件的安全!如果该文件泄密,恶意开发人员会欺骗您的程序集。

程序集签名

接着针对托管 C# (Managed C#) 程序集(将用于调用后端),使用生成的密匙对进行签署。需要用到 Windows、OS X 和 Linux 系统中随附的 al 工具。

程序集签名的过程非常简单。

  1. 打开命令行终端,导航至托管 C# (Managed C#) 程序集和类型:
    al /out:mySignedAssembly.dll myUnsignedAssembly.dll /keyfile:myNewSky.snk
    • mySignedAssembly.dll 是程序集的最终所需名称。
    • myUnsignedAssembly.dll 是一般未签名的托管 C# (Managed C#) 程序集的名称。
    • myNewKey.snk 是加密密匙对文件的名称。
  2. 一旦 al 结束运行,签署的程序集将准备就绪。将其放到 Unity 工程中,与信任链 (Chain of Trust) 系统一起使用。

注入机密

可在 Unity 游戏加载完成后随时在 Unity 网络播放器 (Web Player) 中放入机密。该步骤通过暴露于 UnityObject2 Javascript 对象中的 Javascript SendMessage 函数完成。

向某游戏对象传递一条特殊格式的消息时,信任链 (Chain of Trust) 系统检测到您想注入的机密并拦截消息。无需创建或重命名任何游戏对象就可以使用该系统。有了一个名为 uUnityObject2 实例,Javascript 调用即为:

u.GetUnity().SendMessage("ChainOfTrust_SetValueASDF", ".", "name=mySecretDataName;value=mySecretValue;publickey=publicKeyTokenOfMyAssembly");

取回机密

一旦机密注入到 Unity 网络播放器 (Web Player) 中,就只能通过用匹配的公匙标记加密签署的(“强命名”)托管 C# (Managed C#) 程序集来取回。

Page last updated: 2013-07-01