(Как) можно защитить веб-API с помощью OpenID Connect (или нет?) - PullRequest
0 голосов
/ 29 января 2019

Рекомендуется или рекомендуется защищать веб-API напрямую с помощью Open ID Connect или нет?Настройка:

  • Мобильное приложение
  • Сервер авторизации (ADFS 4.0)
  • Веб-API (ASP.NET Core)

В настоящее времяЯ делаю обычный OAuth2 «Поток кода авторизации», а затем передаю код доступа к моему веб-API в заголовке HTTP как «Authorization: Bearer».В ядре ASP.NET я просто выполняю обычные сервисы. AddAuthentication (...). AddJwtBearer (...) Работает нормально.

Но все говорят о том, что OAuth2 только "псевдо-аутентификация" с определенными недостатками.Я хочу, чтобы мои пользователи проходили надлежащую аутентификацию перед использованием моего веб-API.Таким образом, похоже, что Open ID Connect должен быть подходом, иначе говоря, «настоящей аутентификацией».

Но действительно ли он работает, «потребляя» аутентификацию Open ID Connect в ASP.NET Core Web API?И если да, то как?И это хорошая практика?Кажется, что все примеры относятся к веб-сайтам, а не к веб-API.

Существует метод расширения services.AddAuthentication (...). AddOpenIdConnect ()

Но здесь Реализация OpenID connectПри аутентификации в asp.net WEB API утверждается, что «этот компонент предназначен для интерактивных клиентов».

Что я также не понимаю, что мне делать с «id_token», который я получаю отОткрыть ID подключения.В настоящее время я просто передаю "access_token" в качестве носителя.Как использовать id_token?

Некоторые пояснения:

  • API не действует от имени пользователя (доступ к данным компании).
  • APIуже имеет доступ к «данным».Он не требует для себя никаких рабочих процессов аутентификации и не должен передавать учетные данные пользователей.
  • API должен знать, «кем» является пользователь, и это должно быть сделано современным и хорошим способом.
  • Вот почему я думал об OICD с его "настоящей аутентификацией" (VS Oauth2-only, который является "псевдо").

Я в принципе не могу обернуть голову, как материалвозвращенный из OICD (id_token) будет передан моему веб-API.

1 Ответ

0 голосов
/ 29 января 2019

OIDC - это рабочий процесс OAuth.Это просто расширяет OAuth;это не замена для него.API обычно авторизуются либо по токену, либо по секрету клиента.Разница заключается просто в том, действует ли он от имени определенного пользователя или нет.Например, что-то вроде API Facebook имеет оба рабочих процесса для своего API, вы обычно работаете с API Facebook в качестве клиентского приложения, используя идентификатор приложения и секрет клиента для своего приложения, или вы можете выполнять определенные для пользователя вещи, такие как создание публикации наПользовательская стена получила токен авторизации.

Этот токен авторизации почти всегда происходит из рабочего процесса OAuth.С учетом указанных вами настроек ваше мобильное приложение будет обрабатывать это, чтобы получить токен авторизации для пользователя с вашего сервера ADFS.Между тем ваш API, скорее всего, сделает и то, и другое.Он будет обмениваться данными как с использованием назначенного клиентского секрета, так и токена аутентификации пользователя, если мобильное приложение предоставит его.

...