Непрерывный вход в систему из-за недостатка безопасности (?) С использованием паспорта-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;

0 ответов

Другие вопросы по тегам