Я создаю сеть в 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
.