1

我正在使用公共数据库上的 CloudKit 使用存储在 iCloud 中的数据在 Node 中构建一个 Web。要查询我创建了一个apiToken和一个的数据serverToServerKey。对于第一个,我有一个字符串,但对于服务器到服务器的身份验证,我有一个pem包含私钥的文件。要配置 CloudKit,我正在执行以下操作:

CloudKit.configure({
                services: {
                fetch: fetch
            },
            containers: [{
                containerIdentifier: 'iCloud.com.myName.Container',
                environment: "production",
                apiTokenAuth: {
                    apiToken: "XXXXXXXXXXXXXXXXXX",
                    persist: true
                },
                serverToServerKeyAuth: {
                    keyID: serverKey,
                    privateKeyFile: "./private_key.pem"
                }
            }]
        });

var container = CloudKit.getDefaultContainer();

        container.setUpAuth().then(function(userIdentity) {
            if(userIdentity) {
                publicDB = container.publicCloudDatabase;
                console.log("[OK] Logged in...");
                resolve(userIdentity)
            } 
        });

这显然不会产生任何问题,我可以在容器中查询数据,并且我的 Web 应用程序在本地正常工作。

前一个片段位于我的index.js文件中,当我从 iCloud 获取数据时,将其传递给我的 HTML 文件,然后使用 EJS 渲染它。

现在我将其转移到生产中,我有一些疑问和问题。据我所知,我无法将.pem文件移动到服务器,因为它包含一个私钥,但现在它在后端,所以我不知道它是否会公开。

是否有可能对使用我的网络应用程序的用户进行身份验证apiToken。用户只需要读取数据而不是修改或创建,因此我不需要识别它们。

我是在问一些不可能的事情还是有人做过?我还没有找到任何有关此的信息。当我尝试使用之前的代码片段对用户进行身份验证时,仅使用apiTokenAuth并删除serverToServerKeyAuth我得到一个AUTHENTICATION_ERROR.

4

0 回答 0