Я сделал временный 'sso-сервер', который я хочу подключить к Ответам Wix. Wix это CMS. Wix Answers - это справочный центр, где вы можете получить ответы на часто задаваемые вопросы, получить от клиентов видео поддержки, а также ввести билеты. Ответы Wix - это то, что Wix использует для страниц справки Wix, и они делают одно и то же приложение доступным для пользователей с той же целью.
Мой 'сервер sso' - это AWS API-шлюз, указывающий на функцию Lambda. Довольно прямо вперед. Вы вызываете оконечную точку publi c, и она запускает следующую лямбду:
var express = require('express');
var app = express();
var crypto = require('crypto'); //npm install crypto --save
var base64url = require('base64url'); //npm install base64url --save
var bodyParser = require('body-parser');
var KEY_ID = '1234567'; //note it's a uuid
var SECRET = '1234567xxxxxxxxxxxxxxxxxxxxxxxxxxx';
exports.handler = async (event) => {
//this assumes there is a login or some UI that will receive the needed redirect url
app.get('/login-form', function (request, response) {
var url = require('url');
var urlParts = url.parse(request.url, true);
var query = urlParts.query;
var answersRedirectUrl = query.redirectUrl;
//of course, in a real system the data will come from your own user system
var dummyUserData = {
id: 'your-user-id',
email: 'user@email.com',
firstName: 'Bob2',
lastName: 'Bobson',
profileImage: 'https://i.ytimg.com/vi/-90CAdWk27I/maxresdefault.jpg',
timestamp: Date.now()
};
var token = encryptUserData(JSON.stringify(dummyUserData), SECRET);
response.redirect(answersRedirectUrl + '&token=' + token + '&key=' + KEY_ID);
});
};
function encryptUserData(data, key) {
var iv = new Buffer('');
var bytes = new Buffer(key, 'utf-8');
var hashedKey = crypto.createHash('sha1').update(bytes).digest().slice(0, 16);
var cipher = crypto.createCipheriv('aes-128-ecb', hashedKey, iv);
var crypted = cipher.update(data, 'UTF-8', 'hex');
crypted += cipher.final('hex');
return base64url(new Buffer(crypted, 'hex'));
}
Этот код является лямбда-модифицированной версией кода примера ответов Wix js, отсюда. https://help.wixanswers.com/en/article/setting-up-single-sign-on-sso-for-your-users
Есть зависимости, и я загрузил их все в лямбду, так что это не проблема зависимостей.
Wix Ответы - это простая установка, вы дать им URL для входа и выхода. вы генерируете ключ внутри панели инструментов ответов Wix, и я добавил этот ключ в свою лямбду ниже (те, что ниже, явно замаскированы). Я добавил свою конечную точку в поле в ответах wix.
Я получаю ответ null
и смог получить объект с object.message = "missing auth token"
Фокусировка на JS и лямбде, есть ли что-то, что я оставляю, чтобы это не сработало. Опять же, не очень много опыта с express и этими зависимостями или с SSO.
Спасибо !!