Совместное использование токенов аутентификации между ASP.NET Core MVC и приложением Angular4

В настоящее время у нас есть приложение ASP.NET Core MVC в сочетании с IdentityServer4 для аутентификации. Пользователь проходит проверку подлинности через IdentityServer (с потоком HybridAndClientCredentials) в ADFS, прежде чем он получает доступ к приложению MVC. В SignInScheme на клиенте MVC установлены значения "Cookies".

Мы хотели бы расширить наше приложение MVC для размещения нескольких приложений Angular. Иногда даже больше, чем 1 угловое приложение на просмотр MVC. Угловые приложения будут вызывать отдельные ASP.NET Core Web API от имени пользователя.

Мой вопрос: как угловые приложения узнают, что пользователь уже аутентифицирован в приложении MVC, извлекают токен доступа и вызывают API от имени пользователя?

Я играл с решением, которое придумал Скотт Брэйди , но, похоже, нет интеграции между приложением MVC и приложением Angular. Приложение Angular попытается аутентифицироваться на identityserver и ожидать обратного вызова на определенной странице.

Я ищу решение, как разделить маркеры доступа между приложением MVC и угловыми приложениями, но я застрял. Буду признателен за любую оказанную помощь.

1 ответ

Решение

Если они уже должны войти в систему через гибридный поток на стороне сервера, то самым простым способом была бы конечная точка в вашем приложении MVC с защитой от cookie, которую клиентское приложение может вызвать, чтобы получить токен доступа.

Другой подход заключается в использовании oidc-client-js и получении клиентским приложением Angular собственного токена.

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

Другие вопросы по тегам