Первое приложение разработано на 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).На панели администратора не будет панели входа.
Я нашел три варианта, но я сомневаюсь по соображениям безопасности:
- .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 более безопасна?Каковы лучшие практики?