Могу ли я использовать гибридный поток OIDC при обслуживании углового SPA из проекта ASP.NET Core MVC? - PullRequest
0 голосов
/ 17 июня 2019

У меня есть 2 разных проекта .NET Core 2.2 MVC. Я использую IdentityServer4 для токен-сервера, Azure B2C для хранилища идентификаторов.

Первое приложение MVC - это обычное приложение MVC, и оно отлично работает с гибридным потоком OIDC.

Второе приложение MVC - это приложение Angular 7 cli, которое обслуживает index.html , а содержит API, который будет вызывать приложение. Угловое приложение будет не вызывать любые другие API напрямую (шаблон шлюза).

Мои вопросы касаются второго приложения - я пытаюсь найти наилучший способ настроить приложение Angular для безопасности.

Мое понимание таково: OIDC Неявный поток выставляет токен доступа в браузере. Гибридный поток OIDC не предоставляет токен доступа (по крайней мере, при попадании на тот же веб-сервер - без CORS), поскольку веб-сервер (клиент) использует обратный канал для получения токена доступа через код авторизации и никогда не подвергается его воздействию. браузер.

ВОПРОС # 1: Правильно ли мое понимание Implicit vs. Hybrid?

Если мое понимание правильное, я думаю, что лучшим вариантом будет гибридный поток даже для приложения Angular, но большинство примеров, которые я видел для использования OIDC с Angular, включают неявный поток и не принимают Преимущество кода авторизации / обратного канала. Избегать наличия токена доступа в браузере кажется большой проблемой, достойной целью, но удивляетесь, почему этого не происходит?

ВОПРОС # 2: Я подаю свой Angular index.html с моего MVC-сервера - почему я не могу просто использовать гибридный поток для защиты страницы index.html и сохранить токен в обратном канале?

Что-то подсказывает мне, что мое понимание всего этого не совсем полное ...

1 Ответ

0 голосов
/ 17 июня 2019

Ваше понимание верно.Вы можете защитить свой index.html.Единственная проблема, с которой вы столкнетесь, заключается в том, что на сегодня это не стандартная конфигурация.С вашими требованиями, скорее всего, вам вообще не понадобится какая-либо из клиентских библиотек oidc, вы можете защитить свой (только) API с помощью (same-site, http-only) cookie (не токен на предъявителя), а в ваших Angular Guard просто убедитесь, что вывсе еще вошли в систему с вашей стороны (если нет, перенаправьте через локальный ресурс MVC, чтобы включить серверный код в процедуру входа в систему).

См. этот вопрос , особенно комментарии и ссылки нижедля дальнейшей справки.

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