Istnieje nieodłączna wada projektu w typie aplikacji MVC, którą zbudowałem i wierzę, że nie jestem pierwszą osobą, która zdaje sobie z tego sprawę.MVC AD Azure Refresh Token za pośrednictwem ADAL JavaScript Ajax i KnockoutJs
Mam MVC 4 Zastosowanie który wykorzystuje AD uwierzytelniania Azure, który został wprowadzony do stosowania w następujący sposób
Developing ASP.NET Apps with Azure Active Directory
Gdy jako użytkownik jest uwierzytelniony i Home.cshtml
ładunki, KnockoutJs służy do wykonywania JavaScript AJAX POST i GET żądania odczytu i zapisu danych.
Nie jest to więc dokładnie jedna strona, ale raczej połączenie tradycyjnych postów do uwierzytelniania i udostępniania zasobów oraz operacji odczytu/zapisu za pośrednictwem AJAX.
Podczas żądań AJAX token uwierzytelniania wygasa, a AD nie jest w stanie odświeżyć tokenu za pomocą JavaScript. obserwuje
następujący błąd przeglądarki
XMLHttpRequest nie może załadować https://login.windows.net/xxx. Na żądanym zasobie nie ma nagłówka "Access-Control-Allow-Origin". Pochodzenie 'xxx' jest zatem niedozwolone.
Sprawdziłem adal.js i następujące posty, ale nie jestem pewien, czy adal.js jest rozwiązaniem dla mojego typu aplikacji lub jak najlepiej go włączyć, aby działało z moim typem aplikacji.
Moje rozumienie tej pory:
nie używam angularjs.
Nie zaczynam uwierzytelniania przez JavaScript, a moje uwierzytelnienie nie jest obsługiwane przez JavaScript, aby móc korzystać z adal.js.
Uwierzytelnianie jest wykonywane po stronie serwera, a kolejny mechanizm tokenu odświeżania OAuth2 wymaga pełnego odsyłania stron.
Natknąłem się na różne posty opublikowane przez Vittorio Bertocci, ale żaden nie odnosi się do cech tego typu projektu aplikacji MVC.
ADAL, Windows Azure AD and Multi-Resource Refresh Tokens
WAAD doesn't refresh access token from javascript
Combining ADAL.Net and ADAL.js
AngularJS + ADAL.JS set Resource ID (Audience)
Obecnie jedyną opcją jest użycie ukrytej ramki IFrame HTML do odświeżania co 20 minut i obsługa błędu tokena odświeżania za pomocą strony przekierowania do strony logowania po stronie klienta – puri
Rozumiem, że jest to kilka miesięcy , ale mam teraz ten sam problem Jakie było twoje rozwiązanie? Jak łapiesz błąd tokena po stronie klienta? Dzięki. – Namrehs