仅在没有serverToServerKeyAuth的情况下才能使用apiTokenAuth认证CloudKit JS

时间:2019-05-19 13:49:36

标签: node.js cloudkit cloudkit-web-services cloudkit-js

我正在Node中构建一个Web,该Web使用公共数据库上的CloudKit使用存储在iCloud中的数据。为了查询数据,我创建了一个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对使用我的Web应用程序的用户进行身份验证。用户将只需要读取数据而无需修改或创建,因此我不需要识别它们。

我问的是不可能完成的事情,还是有人做了?我尚未找到任何有关此的信息。当我尝试仅使用apiTokenAuth并使用先前的代码段对用户进行身份验证并删除serverToServerKeyAuth时,就会得到AUTHENTICATION_ERROR

0 个答案:

没有答案