Как приложение .Net Core может проходить аутентификацию из сеанса Expressjs? - PullRequest
0 голосов
/ 23 сентября 2019

Первое приложение разработано на Expressjs.Модули аутентификации:

passport.js
express-session
cookie-parser
connect-mongo

промежуточное программное обеспечение сеанса

app.use(
  session({
    secret: 'kkkjfdfdf787dfdfdf7SSDSf7787asXZ',
    store: new MongoStore({ url: mongoData.url, mongoOptions: {useUnifiedTopology: true}}),
    name: 'nature_app',
    rolling: true,
    resave: true,
    saveUninitialized: false,
    cookie: {
      secure: false,
      maxAge: process.env.MAX_SESS_AGE_SEC * 1000
    }
  })
)

Коллекция сеансов Mongodb после входа в систему получает данные:

{
    "_id" : "OtNPaWfyE6tpkfpIWh-m7XvCAp3No-JN",
    "expires" : ISODate("2019-09-21T16:04:18.732+03:00"),
    "session" : "{\"cookie\":{\"originalMaxAge\":3600000,\"expires\":\"2019-09-21T13:04:18.732Z\",\"secure\":false,\"httpOnly\":true,\"path\":\"/\"},\"csrfSecret\":\"rz_etmj7859KAC0OQRCPiyRF\",\"flash\":{},\"passport\":{\"user\":3143}}"
}

Идентификатор Cookie (nature_app):

s%3AOtNPaWfyE6tpkfpIWh-m7XvCAp3No-JN.8Yy2SKhGyt3NCEdka90JmEyrdphPas1yt6OHabDeqis

Сейчас я разрабатываю второе приложение - панель администратора с .Net Core 3, EntityFramework.Оба приложения будут в одном домене.Первое приложение: wow-nature.com, второе: wow-nature.com/admin.Если пользователь вошел в приложение Expressjs и щелкнул ссылку на панели администратора - .Net Core должен автоматически войти (например, SSO).На панели администратора не будет панели входа.

Я нашел три варианта, но я сомневаюсь по соображениям безопасности:

  1. .Net Core должен прочитать идентификатор cookie Expressjs и проверить его в MongoDb,Если сеанс действителен - .Net Core выполнит аутентификацию сеанса.После этого .Net Core должен восстановить идентификатор сессии.Но мой идентификатор cookie и идентификатор mongodb различаются:
s%3AOtNPaWfyE6tpkfpIWh-m7XvCAp3No-JN.8Yy2SKhGyt3NCEdka90JmEyrdphPas1yt6OHabDeqis != OtNPaWfyE6tpkfpIWh-m7XvCAp3No-JN

И - безопасен ли этот метод?

JWT .Я не знаю, как .Net Core работает с веб-токенами.Я читал о пользователях аутентификации от Laravel до Nodejs .В других местах я читал об этом сомнения в безопасности.

Auth0 .

Я в замешательстве.Извините, я новичок в этой ситуации.

Каким образом аутентификация приложения .Net Core из приложения Expressjs более безопасна?Каковы лучшие практики?

...