Невозможно аутентифицировать CloudKit JS, используя apiTokenAuth, только без serverToServerKeyAuth - PullRequest
0 голосов
/ 19 мая 2019

Я создаю сеть в Node, которая использует данные, хранящиеся в iCloud, используя CloudKit в публичной базе данных.Для запроса данных я создал 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)
            } 
        });

Это, очевидно, не создает никаких проблем, и я могу запросить контейнер для данных, и мое веб-приложение работает без проблем локально.

Предыдущий фрагмент находится в моем файле index.js, и когда я получаю данные из iCloud, я передаю их в мой HTML-файл и отображаю их с помощью EJS.

Теперь я перехожу к производству и у меня есть некоторые вопросы и проблемы.Насколько я знаю, я не могу переместить файл .pem на сервер, поскольку он содержит закрытый ключ, но теперь он находится в бэкэнде, поэтому я не знаю, будет ли он общедоступным.

Существует ли возможность аутентификации пользователей, которые используют мое веб-приложение, только с apiToken.Пользователям нужно только читать данные, а не изменять или создавать, поэтому мне не нужно их идентифицировать.

Я спрашиваю что-то невозможное или кто-то сделал это?Я не нашел никакой информации по этому поводу.Когда я пытаюсь аутентифицировать пользователей, используя предыдущий фрагмент кода, используя только apiTokenAuth и удаляя serverToServerKeyAuth, я получаю AUTHENTICATION_ERROR.

...