Совместное использование токенов аутентификации между 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 собственного токена.
Вы можете абстрагироваться от самого клиентского приложения, так что в дальнейшем вам будет легко изменить механизм. Как это происходит, мы используем комбинацию потоков на стороне сервера и на стороне клиента, и это прекрасно работает.