2016-05-22 3 views
2

Пожалуйста, объясните мне, что использует таблица приложений в OpenIddict. Я следую за этим замечательным учебником http://capesean.co.za/blog/asp-net-5-jwt-tokens/ Он отлично работает. У меня непонимание функций таблицы приложений, которая была добавлена ​​для OpenIddict.Что такое таблица приложений в OpenIddict

В настоящее время мой Front End (Angularjs) + Back end (Web.API с ядром ASP.NET и OpenIddict) отлично работает на одном сервере. Фронт-конец получает токены и использует его в запросах. Задний конец генерирует токены и оценивает их. Все хорошо, но таблица приложений не имеет записей.

Спасибо.

ответ

5

В таблице Applications содержится OAuth2 client applications, которым разрешен использовать ваш сервер идентификации.


Добавление новой записи является обязательным при использовании интерактивных потоков, таких как authorization code или implicit, а клиентские приложения должны послать правильный client_id: OpenIddict будет отклонить запрос на авторизацию, если client_id отсутствует или не соответствовать которое вы полностью доверяете (т.е. приложение, хранящееся в таблице Applications).

То же правило применяется к client credentials grant, что также требует действительного client_id.


В отличие от этого, есть один случай, когда отправка client_id не является обязательным: при использовании resource owner password credentials grant, как показано в блоге вы упомянули.

specification явно заявляет, что клиентское приложение, создающее запрос токена, может отправить его client_id, что означает, что этот параметр не является обязательным.

Клиент МОЖЕТ использовать параметр запроса «client_id» для идентификации себя при отправке запросов на конечную точку маркера.

Когда client_id не может быть извлечен из запроса на токен, OpenIddict не имеет возможности определить личность приложения. В этом случае ошибки, связанные с client_id, пропускаются, и запрос обрабатывается без использования таблицы Applications. Вот почему ваше приложение работает без необходимости заполнения таблицы Applications.


Хотя полезно для целей лесозаготовок, послав client_id не делает grant_type=password запросы безопаснее, так как каждый может выдать себя ходатайство повторно использовать тот же client_id, если приложение не был объявлен в качестве конфиденциальной и был назначен учетные данные клиента (только для «серверных приложений»). В этом случае злоумышленник не может отправить действительный запрос маркера, не зная client_secret.


В OpenIddict, есть также один случай, когда добавление явной регистрации приложения полезно: при использовании introspection middleware для проверки токенов (вместо однонаправленных промежуточного JWT).

Как required by the specification, абоненты должны аутентифицировать использовать интроспекции конечную точку: если OpenIddict не может найти соответствующую запись в таблице Applications, запрос будет отклонен и самоанализ промежуточного слоя никогда не будет работать.

+0

Спасибо за подробный ответ. – Serg

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