Arhn - архитектура программирования

Sails.JS + sails-auth + паспорт-openidconnect

Я пытаюсь внедрить паспорт-openidconnect в свое приложение Sails. Я установил sails-auth, passport, passport-local, passport-http и passport-openidconnect, все из которых необходимы для запуска приложения Sails. Я скопировал содержимое этого файла, чтобы получить паспорт config, так как приложение sails уже было запущено, когда я начал его внедрять. Это мой конфигурационный файл:

module.exports.passport = {

    openid_connect: {
        name: 'OpenID Connect',
        protocol: 'oauth2',
        strategy: require('passport-openidconnect').OAuth2Strategy,
        options: {
            clientID: '',
            clientSecret: ''
        }
    }

};

Я основывал это на некоторых опциях по умолчанию, которые были в файле config/passport.js, упомянутом выше.

Я искал примеры настройки OpenID Connect, но пока ничего не нашел. Кто-нибудь реализовал это в своем собственном проекте и мог бы дать мне несколько советов? Спасибо!


Ответы:


1

Я реализовал паспорт в парусах, с паспортом-местным, паспортом для Google / FB / Twitter, но без sails-auth!

Я не знаю паспорт-openID, но это должно быть почти то же самое.

Сначала вам нужно добавить промежуточное ПО для паспорта, например это в вашем config / http.js

Затем вам нужно создать другую стратегию в config / паспорт.js (например, с FacebookStrategy, должно

var passport = require('passport')
    , LocalStrategy = require('passport-local').Strategy
    , FacebookStrategy = require('passport-facebook').Strategy

var verifyExtHandler = function (token, tokenSecret, profile, done) {
    checkAuthExt(profile, done);
};

var verifyHandler = function (mail, password, done) {

    checkAuth(mail, password, done);

};

// Passport session setup.
// To support persistent login sessions, Passport needs to be able to
// serialize users into and deserialize users out of the session. Typically,
// this will be as simple as storing the user ID when serializing, and finding
// the user by ID when deserializing.
passport.serializeUser(function (user, done) {
    user.password = null;
    done(null, user);
});

passport.deserializeUser(function (user, done) {
    done(null, user);
});

// Use the LocalStrategy within Passport.
// Strategies in passport require a `verify` function, which accept
// credentials (in this case, a username and password), and invoke a callback
// with a user object.
passport.use(new LocalStrategy({
    usernameField: 'mail',
    passwordField: 'password'
}, verifyHandler));

// Remplacer les 'XXXXX' par vos clés et 'yourhost.com' par votre nom de domaine
passport.use(new FacebookStrategy({
    clientID: "XXXXXX",
    clientSecret: "XXXXXX",
    callbackURL: "http://yourhost.com/auth/facebook"
}, verifyExtHandler));

И вам нужно настроить свои маршруты (config / routes.js):

'/auth/facebook': 'AuthController.facebook',
'/auth/facebook/callback': 'AuthController.facebook'

Затем в вашем контроллере:

facebook: function (req, res) {
    passport.authenticate('facebook', {
        failureRedirect: '/auth/login'
    }, function (err, user) {
        if (err) {
            return console.log(err);
        }
        req.logIn(user, function (err) {
            if (err) {
                console.log(err);
                res.serverError();
                return;
            }

            return res.redirect('/');
        });
    })(req, res);
}

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

22.04.2016
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..