Сервер авторизации, Oauth2 и auth0 - PullRequest
1 голос
/ 11 марта 2020

У меня есть несколько вопросов, потому что я не очень хорошо понимаю, как реализовать поток аутентификации .
Чтение некоторых документов Я нашел изображение ниже enter image description here

Теперь я понимаю токен доступа и refre sh токен , но не думаю, что понимаю, как его реализовать.

У меня есть проект, в котором внешний интерфейс - angular, а внутренний - node.js коа с архитектурой микросервисов и шлюзами перед ними. Я могу использовать auth0 как oauth2 сервер авторизации с пользователями, хранящимися внутри?

Как? В auth0 документах есть тонны инструкций, и я не могу понять, что мне подходит.

Я должен перехватить войти в систему , выйти из системы и зарегистрироваться по шлюзу и перенаправить на auth0, или я должен сделать это в моем пользовательском микросервисе ?

Имеет ли смысл таблица пользователя в моем проекте (ах), где есть также таблица личных данных и таблица компании?

Является ли сервер авторизации sso для всех проектов моей компании?

Могу ли я добавить сторонние компании sso?

Могу ли я добавить вход в Google?

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

у вас очень широкий вопрос об архитектурной реализации для вашего конкретного c организационного случая.

Я бы порекомендовал вам следовать приведенной ниже модели управления пользователями, которая заботится о Simple API для аутентификации, регистрации и управления пользователями с использованием NodeJS + комбинация Koa + Passport.

Вы можете развернуть API в Heroku и протестировать API с помощью Postman.

Вы можете использовать промежуточное программное обеспечение NodeJS Global Error Handler, и вы этого не сделаете необходимо реализовать любой избыточный локальный обработчик ошибок.

Рекомендуется использовать промежуточное ПО JWT узла, которое проверяет токен JWT, полученный в запросе http от клиента, действительным, прежде чем разрешить доступ к API, если токен недействительно, клиенту отправляется ответ «401 Unauthorized». Эту авторизацию JWT API можно выполнить на уровне вашего шлюза непосредственно перед вашими микросервисами.

Наконец, пользовательская служба Koa + Passport содержит основные бизнес-логики c для аутентификации пользователей и использует Koa-Redis для управления сеансами в узле api, она инкапсулирует все взаимодействия с пользовательской моделью mon goose и предоставляет простой набор методов, которые используются контроллером пользователей.

Moroever Koa + Passport поддерживает единый вход с OpenID и OAuth, который отвечает на ваш другой вопрос, связанный с SSO.

Здесь вы также можете обнаружить, что KOA лучше всего подходит для микросервисов, поскольку вы уже выбрали тот же. Наложение аутентификации + управление пользователями с использованием той же инфраструктуры окажется очень универсальным и расширяемым.

https://mherman.org/blog/user-authentication-with-passport-and-koa/

Чтобы подключиться к внешнему поставщику единого входа, вы можно использовать клиентский API nodejs oauth2 следующим образом, что позволяет подключить бэкэнд вашего узла для подключения к внешнему серверу единого входа.

https://www.npmjs.com/package/client-oauth2

для единого входа используя Google / Gmail, лучше всего использовать единый вход на основе SAML, предоставляемый google.

Язык разметки утверждений безопасности (SAML) - это основанная на XML структура для аутентификации и авторизации между двумя объектами: поставщиком услуг и Поставщик удостоверений. Поставщик услуг соглашается доверять поставщику идентификационных данных аутентификацию пользователей. В свою очередь поставщик удостоверений генерирует утверждение аутентификации, которое указывает, что пользователь прошел аутентификацию.

SAML - это стандартный формат единого входа (SSO). Информация аутентификации передается через документы с цифровой подписью XML. Это сложная реализация единого входа (SSO), которая обеспечивает бесшовную аутентификацию, в основном между предприятиями и предприятиями.

ниже ссылка содержит подробные сведения о настройке службы SAML / SSO в google из вашего приложения.

https://support.google.com/a/answer/6087519?hl=en

0 голосов
/ 14 марта 2020

Вы можете следовать Auth0 Angular Quickstarts для реализации вашего сценария. Это точно показывает пошаговую реализацию. https://auth0.com/docs/quickstart/spa/angular2/01-login

На уровне архитектуры вы делаете следующее:

  1. Приложение внешнего интерфейса (angular) использует auth0-spa- js для реализации Поток кода авторизации + PKCE для реализации потока входа в систему. Он просто выполняет аутентификацию пользователя и получает токен, который также запрашивает область API. Чтобы запросить разрешение API, добавьте параметр аудитории при запуске потока входа.
  2. После получения токена токен доступа можно использовать для вызова вашего внутреннего API.
  3. На внутреннем сервере необходимо реализовать авторизацию API (он проверяет токен доступа и проверяет, чтобы токен имел необходимые области действия / разрешение). https://auth0.com/docs/quickstart/backend/nodejs/01-authorization

Выше API authoriazatio quickstart использует express промежуточное ПО. Этот пост в блоге объясняет, как сделать то же самое в коа. https://auth0.com/blog/building-and-securing-a-koa-and-angular2-app-with-jwt/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...