Udostępnij za pośrednictwem


Aplikacje jednostronicowe

Ostrzeżenie

Ta zawartość jest przeznaczona dla starszego punktu końcowego Azure AD w wersji 1.0. Użyj Platforma tożsamości Microsoft dla nowych projektów.

Aplikacje jednostronicowe (SPA) są zwykle ustrukturyzowane jako warstwa prezentacji Języka JavaScript (fronton), która działa w przeglądarce, oraz zaplecze internetowego interfejsu API, które działa na serwerze i implementuje logikę biznesową aplikacji. Aby dowiedzieć się więcej na temat niejawnego udzielenia autoryzacji i ułatwić podjęcie decyzji, czy jest to właściwe dla scenariusza aplikacji, zobacz Opis niejawnego przepływu udzielania OAuth2 w usłudze Azure Active Directory.

W tym scenariuszu, gdy użytkownik się zaloguje, fronton języka JavaScript używa biblioteki uwierzytelniania usługi Active Directory dla języka JavaScript (ADAL.JS) i niejawnego udzielenia autoryzacji w celu uzyskania tokenu identyfikatora (id_token) z Azure AD. Token jest buforowany i klient dołącza go do żądania jako token elementu nośnego podczas wykonywania wywołań do zaplecza internetowego interfejsu API, który jest zabezpieczony przy użyciu oprogramowania pośredniczącego OWIN.

Diagram

Diagram aplikacji jednostronicowej

Przepływ protokołu

  1. Użytkownik przechodzi do aplikacji internetowej.
  2. Aplikacja zwraca fronton JavaScript (warstwa prezentacji) do przeglądarki.
  3. Użytkownik inicjuje logowanie, na przykład klikając link logowania. Przeglądarka wysyła żądanie GET do punktu końcowego autoryzacji Azure AD w celu żądania tokenu identyfikatora. To żądanie zawiera identyfikator aplikacji i adres URL odpowiedzi w parametrach zapytania.
  4. Azure AD weryfikuje adres URL odpowiedzi względem zarejestrowanego adresu URL odpowiedzi skonfigurowanego w Azure Portal.
  5. Użytkownik loguje się na stronie logowania.
  6. Jeśli uwierzytelnianie zakończy się pomyślnie, Azure AD utworzy token identyfikatora i zwróci go jako fragment adresu URL (#) do adresu URL odpowiedzi aplikacji. W przypadku aplikacji produkcyjnej ten adres URL odpowiedzi powinien być https. Zwrócony token zawiera oświadczenia dotyczące użytkownika i Azure AD, które są wymagane przez aplikację do zweryfikowania tokenu.
  7. Kod klienta javaScript uruchomiony w przeglądarce wyodrębnia token z odpowiedzi do użycia w zabezpieczaniu wywołań do zaplecza internetowego interfejsu API aplikacji.
  8. Przeglądarka wywołuje zaplecze internetowego interfejsu API aplikacji z tokenem identyfikatora w nagłówku autoryzacji. Usługa uwierzytelniania Azure AD wystawia token identyfikatora, który może być używany jako token elementu nośnego, jeśli zasób jest taki sam jak identyfikator klienta (w tym przypadku jest to prawda, ponieważ internetowy interfejs API jest własnym zapleczem aplikacji).

Przykłady kodu

Zobacz przykłady kodu dla scenariuszy aplikacji jednostronicowych. Pamiętaj, aby często sprawdzać, jak często są dodawane nowe przykłady.

Rejestrowanie aplikacji

  • Pojedyncza dzierżawa — jeśli tworzysz aplikację tylko dla swojej organizacji, musi być zarejestrowana w katalogu firmy przy użyciu Azure Portal.
  • Wiele dzierżaw — jeśli tworzysz aplikację, która może być używana przez użytkowników spoza organizacji, musi być zarejestrowana w katalogu firmy, ale także musi być zarejestrowana w katalogu każdej organizacji, który będzie używać aplikacji. Aby udostępnić aplikację w swoim katalogu, możesz uwzględnić proces rejestracji dla klientów, który umożliwia im wyrażanie zgody na aplikację. Po zarejestrowaniu się w aplikacji zostaną wyświetlone okno dialogowe z wyświetlonymi uprawnieniami wymaganymi przez aplikację, a następnie opcją wyrażenia zgody. W zależności od wymaganych uprawnień administrator w drugiej organizacji może być zobowiązany do udzielenia zgody. Gdy użytkownik lub administrator wyrazi zgodę, aplikacja jest zarejestrowana w katalogu.

Po zarejestrowaniu aplikacji należy ją skonfigurować tak, aby korzystała z niejawnego protokołu udzielania protokołu OAuth 2.0. Domyślnie ten protokół jest wyłączony dla aplikacji. Aby włączyć niejawny protokół udzielania OAuth2 dla aplikacji, zmodyfikuj manifest aplikacji z Azure Portal i ustaw wartość "oauth2AllowImplicitFlow" na true. Aby uzyskać więcej informacji, zobacz Manifest aplikacji.

Wygaśnięcie tokenu

Korzystanie z ADAL.js pomaga w następujących rozwiązaniach:

  • Odświeżanie wygasłego tokenu
  • Żądanie tokenu dostępu w celu wywołania zasobu internetowego interfejsu API

Po pomyślnym uwierzytelnieniu Azure AD zapisuje plik cookie w przeglądarce użytkownika w celu ustanowienia sesji. Zwróć uwagę, że sesja istnieje między użytkownikiem a Azure AD (a nie między użytkownikiem a aplikacją internetową). Po wygaśnięciu tokenu ADAL.js używa tej sesji do dyskretnego uzyskania innego tokenu. ADAL.js używa ukrytego elementu iFrame do wysyłania i odbierania żądania przy użyciu niejawnego protokołu udzielania OAuth. ADAL.js może również użyć tego samego mechanizmu, aby dyskretnie uzyskać tokeny dostępu dla innych zasobów internetowego interfejsu API, które aplikacja wywołuje, o ile te zasoby obsługują współużytkowanie zasobów między źródłami (CORS), są zarejestrowane w katalogu użytkownika, a każda wymagana zgoda została udzielona przez użytkownika podczas logowania.

Następne kroki