Как мой API должен обрабатывать вход через auth0? - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь узнать, как использовать auth0 для обработки аутентификации пользователя для API, который я сейчас создаю.

У моего API есть две конечные точки:

Конечная точка входа в систему: /api/login

Запросить конечную точку токена доступа: /api/auth?code={code}

Здесь поток аутентификации:

  1. Пользователь переходит к конечной точке входа в мой API.
  2. Пользователь перенаправлен на auth0 ui.
  3. Пользователь вводит свои учетные данные для входа.
  4. Auth0 перенаправляет обратно на /api/auth, где запрос на access_token выполняется с использованием кода входа.

Во-первых, правильно ли я понимаю поток аутентификации Oauth?Если так, то как лучше всего, чтобы мой API обрабатывал первоначальное перенаправление входа в систему на auth0?

Поскольку в момент, когда я набрал /api/login из интерфейсного интерфейса, он просто возвращает html страницы входа в систему на auth0,Должен ли я вместо этого возвращать 302 с URL-адресом перенаправления или возможно создать конечную точку, где пользователь вводит имя пользователя и пароль через мой API и избегает перенаправления?

--- update ---

После того, как пользователь прошел аутентификацию через auth0, он получает access_token и id_token, которые мой API должен использовать для проверки того, кто это пользователь?

Не уверен, что мое понимание верно, но я верю, что мой интерфейс - клиентское приложение OAuth, а мой API - сервер ресурсов OAuth.Поэтому мой API должен вызывать auth0 / userinfo для проверки пользователя?

1 Ответ

0 голосов
/ 05 июня 2018

Если вы пытаетесь защитить приложение для конечного пользователя (ваш вопрос по этому вопросу не ясен), я понимаю, что если вы используете Auth0, вам, скорее всего, не понадобится API /api/login и api/auth.Если вы используете Auth0, вы можете получить эти данные во время аутентификации через Auth0.

Я бы сказал, что ваше ПРИЛОЖЕНИЕ (не API) перенаправит пользователя на конечную точку входа Auth0.Это можно сделать, включив Auth0 SDK на выбор , в зависимости от того, что вы создаете.Например, если вы создаете веб-приложение, вы можете включить auth0.js и позвонить webAuth.authorize(), чтобы активировать вход в систему.Во время этого входа в систему, если вы настроили API в Auth0, и вы указали правильную область действия и аудиторию во время входа в систему, ваш ответ вернет токен API.

Тогда ваш пользователь находится в состоянии на стороне клиентагде вы вошли в систему, и у вас есть токен.Затем вы можете предоставить этот токен своему API, и ваш API может при необходимости проверить его.Auth0 также имеет различные библиотеки для проверки токена (например, spring security one ).

Наконец, вопрос о том, какой поток oAuth использовать, это также зависит от того, какое приложениеты защищаешьСнова Auth0 docs , чтобы помочь.Процесс зависит от того, создаете ли вы веб-приложение на стороне сервера, SPA, собственное приложение и т. Д. Ваш вопрос немного сбивает с толку, и он звучит так, будто вы создаете API и хотите его защитить.Если нет клиентского приложения (только вызовы API между компьютерами), то вы не будете иметь дело с HTML и страницами входа.Скорее всего, вы попадете в поток Client Credentials , который я в последний раз проверял, был включен только для пользователей Enterprise Auth0.

...