Как аутентифицировать приложение Angular 4, размещенное внутри ASPNETCORE

Я просмотрел онлайн-примеры для IdentityServer4 и не смог решить проблему, с которой столкнулся.

У меня есть приложение Angular 4, размещенное в корне приложения ASP.NET Core 2. Приложение ASP.NET Core не имеет контроллеров, в нем размещается только приложение Angular 4. Это делается для того, чтобы иметь возможность использовать гибридный, а не неявный грант, чтобы токены не отправлялись обратно в браузер.

Теперь я могу настроить клиента как приложение MVC с помощью HybridAndClientCredentials. Но будет ли это работать на стороне Angular? Как узнать, аутентифицирован ли пользователь, как выполнять обратные вызовы на серверную часть API, где получить токен доступа в приложении Angular и т. д. Я немного запутался. Я пытаюсь избежать использования клиентского NPM для интеграции с неявным потоком в Angular, потому что хочу хранить токены на сервере.

Цените любые отзывы.

Спасибо


person Bill    schedule 14.02.2018    source источник
comment
Но будет ли это работать на стороне Angular? Думайте так, пока вы делаете все свои вызовы API через приложение MVC.   -  person Anton Toshik    schedule 15.02.2018


Ответы (1)


Боюсь, вы попали в безвыходную ситуацию. Согласно спецификациям OAuth поток, который должен использоваться со SPA'а неявно. А также спецификации IdentityServer.

Если вы конвертируете в MVC, вы теряете функциональность SPA.

Собственно ответ в вашем вопросе - where to get the Access Token in the Angular App. Как только вы получите его в приложении angular, оно уже доступно пользователю. Но, не имея его в приложении angular, вы не можете выполнить вызов аутентификации Bearer.

Как я уже сказал - безвыходная ситуация. Если мы хотим найти здесь что-то положительное, так это то, что токен доступа является недолговечным токеном (или, по крайней мере, рекомендуется), и через несколько минут срок его действия истек.

PS: В дни https передача конфиденциальной информации «по кабелю» более (я не говорю пуленепробиваемой) безопасна, и предоставление пользователю токена доступа равносильно тому, чтобы сказать ему Hey you have this permissions, your name is <name> и т. д. Вещи, которые он должен уже знать.

person m3n7alsnak3    schedule 15.02.2018
comment
Согласованный. Правильный подход для SPA — это в основном то, что реализует библиотека oidc-client-js. Неявный поток, используйте access_token для взаимодействия с внутренним API без сохранения состояния, пользуйтесь автоматическим обновлением токена и функциями мониторинга сеанса. Предоставление токена доступа клиенту на самом деле не более рискованно, чем раскрытие файла cookie с теми же разрешениями, и вам также не нужно беспокоиться о CSRF. - person mackie; 15.02.2018