Аутентификация с помощью PKI в Angular

#javascript #angularjs #authentication #pki

#javascript #angularjs #аутентификация #pki

Вопрос:

Я борюсь с попыткой аутентификации в приложении AngularJS с использованием PKI. Все вопросы и примеры, которые я видел, показывают аутентификацию с использованием логина / пароля вместо этого. Однако я работаю в интрасети, где мы последовательно используем ключи PKI. Я прочитал различные предложения в Интернете, но, похоже, ни в одном из них не обсуждается моя конкретная архитектура.

Угловая сторона содержит несколько страниц / контроллеров, и у меня нет способа контролировать, какую страницу пользователь посещает первой. Мне нужна информация об авторизации на каждой странице.

Приложение настроено с помощью службы NodeJS REST для получения авторизаций пользователя и другой информации на основе открытого ключа пользователя (передаваемого через сертификаты). Поскольку служба NodeJS должна связываться с внешними серверами, я хочу вызвать ее только один раз и сохранить объект authorizedUser (возможно, в rootScope?)

Я рассмотрел создание сервисов, поставщиков и т.д. Но, похоже, ни один из них не подходит для этой задачи. Подводя итог:

  • Авторизация с использованием сертификатов PKI, а не логина / пароля
  • Сертификаты используются для доступа к службе REST NodeJS, но должны быть вызваны только один раз
  • Нескольким угловым контроллерам / страницам требуется информация для авторизации

Каков был бы наилучший подход здесь?

Комментарии:

1. Как насчет того, чтобы отправить сертификат на сервер и сгенерировать токен jwt, действительный для каждого запроса?

Ответ №1:

Хорошо — я понял это. Мой подход состоял в том, чтобы поместить вызов веб-сервиса на серверную часть NodeJS в module.run() и установить $ rootScope в блоке $ http.get().success(). Серверная часть NodeJS получает сертификаты из вызова webservice и выполняет поиск, который ей необходимо выполнить.

Я не уверен, что это лучший подход, но пока он работает.