2013-07-24 3 views
0

Я ищу советы по аутентификации для своего веб-приложения. Я использую Node, Express и Passport для создания этого приложения.Стратегии аутентификации веб-приложений

Приложение имеет REST API с использованием Basic Auth (без создания сеанса) и размещает несколько веб-страниц Angular.js с использованием формы Auth (с созданием сеанса).

Я хотел бы, чтобы Угловые страницы подключались к API REST, который использует другую стратегию Auth. Кажется, у меня есть два варианта:

  1. Создание пользовательского Basic Auth промежуточного программного обеспечения, (потому что паспорт не делает этого из коробки). Это будет делать сеанс Auth, если запрос имеет один, в противном случае стандартного Basic Auth

  2. Expose два API, один с базовой аутентификацией (для наружного применения) и один с формой аутентификацией (для страниц приложений)

Если также слышал, что использование OAuth2 может быть вариантом, но, безусловно, это имеет смысл только для аутентификации с третьей стороной?

+0

ли обе стратегии аутентификации, предназначенные для доступа тот же контент из одних и тех же конечных точек? – max

ответ

1

Мое текущее решение состояло в том, чтобы выполнить смешанную аутентификацию (сеанс и базовую) на остальном api. Если сеанс существует, в противном случае выполните базовое auth. Как следует:

api.coffee:

app.api.external.get("/agents", [auth.basic], (req, res) -> 
    res.json myListOfAgents 

auth_middleware.coffee

basic: (req, res, next) -> 
    if req.isAuthenticated() 
     return next() 
    else 
     return passport.authenticate('basic', { session: false })(req, res, next) 
+0

После более чем 1 часа застрял с этим, последняя линия сделала мой день! – ismriv

Смежные вопросы