Непрерывный вход в систему из-за недостатка безопасности (?) С использованием паспорта-github/ паспорта-github2
Я работал над системой авторизации для входа на веб-сайт, но обнаружил, что нет возможности (?) Отменить / удалить сеанс из Github OAuth2.0.
Есть ли у кого-нибудь опыт работы с этим OAuth, чтобы он требовал повторного входа на сайт; поскольку это недостаток безопасности большинства разрабатываемых мной веб-сайтов.
Отредактировано 10.12.2020:
Думал, что нашел надежду, обнаружив эту конечную точку, но это
404
используя это для
revoke access_token
через старый API Route
https://api.github.com/applications/{client_id}/tokens/{accessToken}
Мой код выглядит примерно так:
axios.delete(`https://api.github.com/applications/${config.OAuth2_Github.client_id}/tokens/${req.user.accessToken}`, {
headers: {
Authorization: config.OAuth2_Github.client_secret,
},
contentType: "application/json",
});
const express = require("express");
const router = express.Router();
const GithubStrategy = require("passport-github").Strategy;
const passport = require("passport");
const config = require("../../../../settings/config");
const ConsoleHandler = require("../../../handlers/ConsoleHandler");
const refresh = require("passport-oauth2-refresh");
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(obj, done) {
done(null, obj);
});
var Github = new GithubStrategy({
clientID: config.OAuth2_Github.client_id,
clientSecret: config.OAuth2_Github.client_secret,
callbackURL: config.OAuth2_Github.callback_url,
},
function(accessToken, refreshToken, profile, cb) {
console.log(profile);
process.nextTick(() => cb(null, profile));
});
passport.use(Github);
refresh.use(Github);
router.get("/github/login", passport.authenticate("github"));
router.get("/github/callback", passport.authenticate("github"), async function(req, res) {
if (req.query.error) {
res.status(403).render("../../views/err/403", { error: req.query.error, reason: req.query["error_description"].replace("+", " ") });
} else {
req.session.user = req.user;
console.log(req.session.user);
ConsoleHandler(`${req.session.user.username} just signed in using Github.`, "debug");
res.redirect("/panel/dashboard");
}
});
module.exports = router;