Как проверить подлинность как внешнего, так и внутреннего интерфейса, используя OID C (vuejs + nodejs)? - PullRequest
0 голосов
/ 25 января 2020

Я создаю одностраничное приложение с Vuejs внешним интерфейсом и Nodejs внутренним. Читал тонны о едином входе и oid c, и ему удалось внедрить аутентификацию, используя Oid c для внешнего интерфейса, где я получил токен от своего провайдера идентификации.

Не уверен, однако, теперь, как также реализовать это для бэкэнда и где / когда / как.

Так что в настоящее время, когда пользователь обращается к странице, в моем файле маршрутизатора. js, это происходит:

router.beforeEach(vuexOidcCreateRouterMiddleware(store));

В магазине я делаю это:

Vue.use(vuex);
const store = new Vuex.Store({
  state: {
    // holds current list of products
    products: [],
  },
  getters,
  mutations,
  actions,
  modules: {
    // initialize PING-OIDC module
    oidcStore: vuexOidcCreateStoreModule(
      oidcSettings,
      { namespaced: false },
      {
        userLoaded: (oidcUser) => {
          axios.defaults.headers.common.Authorization = `${oidcUser.token_type} ${oidcUser.access_token}`;
        },
      },
    ),
  },
});

export default store;

Поэтому я установил заголовок авторизации, но теперь я не уверен, где и как действовать в бэкэнде, чтобы также добавить + подтвердите аутентификацию там.

Очень новый для всего этого, и, кажется, есть много разных способов продолжить, так что оцените все подсказки.

В настоящее время на сервере. js, я просто выполните следующие действия:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json()) 

const cors = require('cors')
const corsOptions = {
  origin: 'http://localhost:5002',
  optionsSuccessStatus: 200
}

app.use(cors(corsOptions))

//get mysql db here
const data = require('./app/config/db.config.js');
const db = data.MySQL_DB;

 //  show all products
app.get('/api/productlist',(req, res) => {
  const sql = "SELECT ID FROM Product_Table";
  const query = db.query(sql, (err, results) => {
    if(err) throw err;
    console.log("productIds ", results);
    res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});


// Create a Server
var server = app.listen(8080, function () {
  var host = server.address().address
  var port = server.address().port
  console.log("App listening at http://%s:%s", host, port)
})

Так я должен также создать там запрос post? Просто не уверен в том, как подтвердить запрос там .. Большое спасибо за помощь!

1 Ответ

0 голосов
/ 11 февраля 2020

Вам необходимо уточнить, какие данные / маршруты / страницы вы хотите защитить.

Вы входите в систему со своего клиента -> отправляете на сервер (например: api / login) -> отвечаете своему клиенту с помощью учетные данные -> сохранить пользователя и учетные данные

см. паспорт. js для express см. accesscontrol для вашей стороны сервера данных

Обратите внимание, что маршруты в клиенте могут быть легко взломаны

...