Node.js Интеграция приложений с сервером идентификации WSO2 для единого входа - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь внедрить службу единого входа для приложений Node.js с использованием сервера идентификации WSO2.Я новичок в домене SSO.

Я локально развернул сервер идентификации WSO2.

Я использую это приложение простого узла в качестве поставщика услуг.

var express = require("express");
var passport = require("passport");
var SamlStrategy = require('passport-saml').Strategy;
var bodyParser = require("body-parser");
var session = require("express-session");
var app = express();
app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(session({ secret: 'this shit hits'}));
app.use(passport.initialize());
app.use(passport.session());

var redirectLogin = function (req,res,next) {
   if (!req.isAuthenticated()) {
       res.redirect("/myapp/login");
   }
   next();
}
passport.serializeUser(function(user, done) {
     done(null, user);
});

passport.deserializeUser(function(user, done) {

  done(null, user);
});

passport.use(new SamlStrategy({
    entryPoint: 'https://localhost:9443/samlsso',
    issuer: 'MyAppExpress'
  },
  function(profile, done) {
    var myUser = {
      email : profile.nameID
    }
    done(null, myUser);
  }));

app.get('/myapp/login',
  passport.authenticate('saml', {
    successRedirect: "/myapp",
    failureRedirect: "/myapp/login",
  }));

app.post('/myapp/saml', passport.authenticate('saml', {
    failureRedirect: "/myapp/login",
    failureFlash: true
  })
  ,
  function(req, res) {
    res.redirect("/myapp");
  }
);
app.get("/myapp",redirectLogin, function(req, res) {
    res.send("you're authenticated !!!! "+ JSON.stringify(req.user));
});

app.listen(process.env.PORT || 1234);

СервисКонфигурации провайдера на сервере идентификации WSO2: enter image description here

enter image description here

Я следовал инструкциям, приведенным по этой ссылке. Аутентификация SAML с WSO2 / LDAP / PASSPORT / EXPRESS

В настоящее время я сталкиваюсь со следующими проблемами:

  • ALERT: неверное значение URL-адреса получателя подтверждения 'http://localhost:1234/saml/consume' в сообщении AuthnRequest от эмитента «MyAppExpress».Возможно попытка спуфинговой атаки.Это происходит, когда я пытаюсь войти в систему с правами администратора [имя пользователя: admin, пароль: admin].Этот пользователь существует в источнике данных пользователя.enter image description here
  • Контекст не существует.Вероятно, из-за аннулированного кэша.Это происходит, когда я пытаюсь войти в систему с неверным пользователем

Вопросы:

  • Есть ли проблема внутри приложения узла.
  • илипроблема с настройками поставщика услуг.

1 Ответ

0 голосов
/ 29 мая 2018

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

На стороне поставщика услуг: http://localhost:1234/saml/consume

В вашей конфигурации Identity Server: http://localhost:8080/myapp/saml

В обоих случаях используйте один и тот же URL-адрес потребителя подтверждения

Надеюсь, это поможет.

...