Я создаю 2 экспресс-приложения, и я пытаюсь получить аутентификацию SSO для обоих приложений. По сути, я ищу способ перевести сессию на заднюю систему.Аутентификация по нескольким приложениям
Person A logs into the front end application
Person A makes a request to the front end system
Front end system makes a service (REST) call to the back end system
Back end system determines if person A has the correct role to make the request
Back end system makes or denies the request
Вот что я имею в виду:
2 sailsJS приложения. Один, который обрабатывает аутентификацию переднего конца &, и тот, который обрабатывает доступ на основе доступа к базе данных на основе обратной связи.
Я подумываю использовать разрешения на паруса для приложения на задней панели, а также права на паруса или паруса-auth для передней части. Оба являются обертками для passport.js.
Долгий способ сделать это (и я не уверен, правильный путь, так как она требует перенаправление серверной системы) заключается в использовании какого-то единого входа (https://www.npmjs.com/package/passport-sso)
То, что я предпочел бы делать это пересылка сеанса с запросом. Что-то вроде
var putArgs = {
data: myData,
headers: {"session": req.session}
}
client.put("http://localhost:81/myServiceEndpoint", putArgs, function(data, response){
//Do something with response
})
я планирую использовать Redis для кэша сеанса, так что есть способ для обоих приложений использовать экземпляр же Redis и передать ключ для сессии?
ПРИМЕЧАНИЕ:
Если все сделано правильно, то пользователь не будет иметь какое-либо взаимодействия с задним концом системой. Система внешнего интерфейса сделает запрос к бэкэнд-системе от имени пользователя.
Для того, чтобы права на парусы работали, пользователь должен быть полностью аутентифицирован. Просто передача _id пользователя и выполнение поиска не сработает.
Как вы проходите токен? Также как центральный API знает, что делать с токеном, чтобы связать его с сеансом? –
Токен поставляется в качестве параметра заголовка с запросом REST. Токен является токеном JSON (https://github.com/auth0/node-jsonwebtoken), который содержит пользовательский объект, подписанный с помощью частного токена. К интерфейсу, это нечитаемая строка буквенно-цифровых символов, модуль токена JSON преобразует это в информацию о пользователе в конце. В вашем случае ваши сессии могут иметь UUID, который передается внутри токена. –