Я пытаюсь заставить SSO работать для веб-приложения, использующего сервис OneLogin. Я выполнил аналогичные шаги в этом сообщении OneLogin, посвященном стеку, - как я могу перенаправить пользователя на другую страницу после успешного входа? .
Моя конечная цель - создать сеанс, который вернет браузеру cookie-файл для доступа к приложению, которое обрабатывает OneLogin.
Я могу получить токен и токен сеанса, но, похоже, у меня возникли проблемы при создании реального сеанса, подобного этому https://developers.onelogin.com/api-docs/1/login-page/create-session-via-token. Я не могу получить cookie-файл и теперь не уверен, как двигаться дальше. Я что-то здесь упускаю? Спасибо.
app.post('/index', function(req, res) {
let options = {
method: 'POST',
uri: 'https://api.us.onelogin.com/auth/oauth2/v2/token',
auth: {
user: 'username',
pass: 'password'
},
json: {
grant_type: 'client_credentials'
}}
request(options, function(error, response, body){
let accessToken = body.access_token
options = {
method: 'POST',
url: 'https://api.us.onelogin.com/api/1/login/auth',
qs:
{ username_or_email: 'email',
password: 'client-password',
subdomain: 'client-domain' },
headers:
{ 'Cache-Control': 'no-cache',
'Content-Type': 'application/json',
`Authorization: `bearer:${accessToken}` },`
body:
{ username_or_email: 'email',
password: 'client-password',
subdomain: 'client-domain' },
json: true };
request(options, function (error, response, body) {
if (error) throw new Error(error);
const sessionToken = body.data[0].session_token
options = {
method: 'POST',
url: 'https://client-domain.onelogin.com/session_via_api_token',
headers:{ 'Cache-Control': 'no-cache',
'Content-Type': 'application/json' },
body: {"session_token": sessionToken},`
json: true };
request(options, function (error, response, body){
if (error) throw new Error(error);
});
})
});
})