M365Con 2027 – bezpłatna konferencja online · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Dlaczego własne rozwiązania uwierzytelniania i UX psują aplikacje M365

By ·

Witaj ponownie na blogu! Jeśli kiedykolwiek wpatrywałeś się w pusty ekran, zastanawiając się, dlaczego Twoja samodzielnie zbudowana aplikacja Microsoft 365 nagle zgłasza ciche błędy uwierzytelniania albo doprowadza zespół ds. zgodności z zabezpieczeniami do szału, to z pewnością nie jesteś sam. Budowanie nowoczesnego oprogramowania dla przedsiębiorstw jest wystarczająco trudne, bez konieczności wy

Automatically translated with AI from the original post. Read the English original

▶ BLOGWhy DIY Auth and UXBreak M365 AppsM365.FM
Titelbild: Why DIY Auth and UX Break M365 Apps

Witamy ponownie na blogu! Jeśli kiedykolwiek wpatrywałeś się w pusty ekran, zastanawiając się, dlaczego Twoja aplikacja Microsoft 365 zbudowana na zamówienie nagle zgłasza ciche błędy uwierzytelniania albo doprowadza zespół ds. zgodności z zabezpieczeniami do szału, to zdecydowanie nie jesteś w tym sam. Tworzenie nowoczesnego oprogramowania dla przedsiębiorstw jest wystarczająco trudne, a do tego trzeba jeszcze wynajdywać koło na nowo za każdym razem, gdy trzeba uwierzytelnić użytkownika, przeszukać katalog Azure Active Directory albo wyrenderować widżet kalendarza. Mimo to zespoły deweloperskie na całym świecie wciąż wpadają w pułapkę, budując od zera własne przepływy OAuth i autorskie komponenty interfejsu.

W tym wpisie szczegółowo przyjrzymy się temu, dlaczego podejście DIY regularnie sabotuje aplikacje M365, wprowadzając ukryte ryzyka, takie jak dryf OAuth, utrata zaufania użytkowników i luki w audytach zgodności. Co ważniejsze, pokażemy, jak ominąć te poważne problemy, korzystając z solidnych, gotowych rozwiązań. Rozłóżmy na czynniki pierwsze, jak przestać pisać ryzykowny, własny kod szablonowy i zacząć szybciej dostarczać bezpieczne, gotowe do produkcji interfejsy frontendowe dla M365.

Przegląd

Większość aplikacji Microsoft 365 w końcu załamuje się w trzech krytycznych punktach integracji: uwierzytelnianiu, wyszukiwaniu w katalogu i doświadczeniu użytkownika kalendarza. Oprócz psucia funkcjonalności, często wyglądają przy tym zupełnie nie tak, jak reszta marki. Na szczęście istnieje lepszy sposób. Microsoft Graph Toolkit udostępnia utrzymywane, markowane przez Microsoft komponenty React, które łączą się bezpośrednio z Microsoft Graph, obsługują złożone tokeny i przepływy zgody od razu po instalacji oraz zapewniają godne zaufania, w pełni zgodne z wymogami doświadczenie użytkownika, a jednocześnie pozwalają zespołowi bezpiecznie dostosowywać je w razie potrzeby.

Dla kogo to jest

Niezależnie od tego, czy jesteś głęboko zaangażowany w inżynierię frontendu, czy zarządzasz zgodnością z wymogami bezpieczeństwa w przedsiębiorstwie, zrozumienie nowoczesnych wzorców integracji ma kluczowe znaczenie. Ten przewodnik został zaprojektowany specjalnie dla:

  • Deweloperów frontendu i liderów technicznych budujących aplikacje webowe połączone z M365
  • Zespołów produktowych, które potrzebują szybkiego, zgodnego z wymogami uwierzytelniania i funkcji katalogowych, bez rozdmuchiwania swoich cykli sprintów
  • Właścicieli bezpieczeństwa i zgodności, którzy są zmęczeni zarządzaniem ryzykownymi, własnymi wdrożeniami OAuth i dowolnym dryfem interfejsu

Dlaczego rozwiązania DIY się psują (i zagrażają zgodności)

Zawsze zaczyna się niewinnie. Deweloper mówi: „Potrzebujemy tylko prostego przycisku logowania i szybkiego sposobu na wyszukiwanie użytkowników; napisanie własnego opakowania nie zajmie dużo czasu”. Trzy miesiące później aplikacja jest nękana subtelnymi, powracającymi awariami:

  • Dryf OAuth: Samodzielnie podłączona biblioteka MSAL, własne przechowywanie tokenów, zepsute pętle odświeżania tokenów oraz nieobsłużone przypadki brzegowe zgody, które po cichu blokują użytkowników w systemie.
  • Niedopasowanie UX: Czcionki, palety kolorów, ikony i wzorce interakcji, które kłócą się z natywnym interfejsem Microsoft, budząc natychmiastową nieufność i dezorientację użytkowników.
  • Luki w audycie: Niespójne ekrany zgody, nieszczelne mechanizmy wyszukiwania osób ujawniające nieautoryzowane dane oraz słaba zgodność z wymogami dostępności, które nie przechodzą przeglądów bezpieczeństwa w przedsiębiorstwach.

Co daje Graph Toolkit

Zamiast zmagać się z surowymi punktami końcowymi i własnym zarządzaniem stanem, przyjęcie ustandaryzowanego zestawu narzędzi zmienia wszystko. Oto, co otrzymujesz od razu po instalacji:

  • Markowane przez Microsoft komponenty React, które płynnie łączą się z danymi Microsoft Graph i „po prostu działają”.
  • Wbudowane zarządzanie uwierzytelnianiem i zgodą (tokeny, cykle odświeżania i precyzyjne zakresy), z niezawodnie działającą w tle biblioteką MSAL.
  • Automatyczne buforowanie, inteligentne ograniczanie przepustowości i ustandaryzowane stany błędów, obsługiwane za Ciebie.
  • Wygląd i działanie zgodne z Fluent UI oraz kompleksowe funkcje dostępności (pełna nawigacja klawiaturą, obsługa czytników ekranu i gotowość na układ RTL).
  • Bezpieczne punkty dostosowania (za pomocą właściwości oraz części lub klas CSS), które pozwalają stylizować aplikację bez naruszania kluczowych sygnałów zgodności i zaufania.

Podstawowe komponenty, z których będziesz korzystać od pierwszego dnia

Gdy zaczniesz zastępować swój łatany kod standardowymi komponentami, kilka istotnych elementów budulcowych od razu przejmie na siebie większość pracy przy Twojej architekturze:

  • Login: Gotowe do użycia doświadczenie logowania i wylogowania Microsoft, które zarządza profilami użytkowników, tokenami i pełnym przepływem zgody bez konieczności pisania własnego, splątanego kodu OAuth.
  • PeoplePicker: Szybki, z opóźnieniem debounce komponent wyszukiwania w katalogu Azure AD z awatarami i obsługą wielokrotnego wyboru, zaprojektowany tak, aby unikać ograniczeń liczby wywołań API oraz skomplikowanych pułapek stronicowania.
  • Agenda: Wydarzenia z kalendarza programu Outlook prezentowane w przejrzysty sposób, z charakterystycznymi dla usług Microsoft 365 wskazówkami wizualnymi (takimi jak wskaźniki cykliczności, aktualizacje w czasie rzeczywistym i zarządzanie strefami czasowymi), wspierane inteligentnym lokalnym buforowaniem.

Kiedy sięgnąć po zestaw narzędzi, a kiedy po własny kod

Standaryzacja warstwy front-end to duży krok naprzód, ale nadal trzeba wiedzieć, gdzie przebiega granica między komponentami platformy a własnym kodem:

  • Zestaw narzędzi: Sięgnij po te komponenty, gdy szybko potrzebujesz bezpiecznego logowania, wyszukiwania w katalogu firmowym, kalendarzy, zadań, plików, obecności użytkowników lub zarządzania profilem, zachowując spójność z marką.
  • Własny kod: Twórz własny kod, gdy aplikacja wymaga bardzo indywidualnych połączeń danych, niszowych wizualizacji dla przedsiębiorstw lub gdy główne źródło prawdy stanowią systemy spoza Microsoft Graph.

Szybki start (ścieżka bez zbędnych komplikacji)

Gotowy, by zacząć bez architektonicznego zamieszania? Skorzystaj z tej prostej ścieżki, aby przygotować środowisko:

  1. Zarejestruj aplikację w Entra ID w środowiskach Dev, Test i Prod, włącz obsługę MSAL i przydziel wyłącznie minimalne, niezbędne zakresy Graph.
  2. Zainstaluj dostawcę uwierzytelniania i podłącz go w aplikacji React, łącząc dostawcę MSAL z dostawcą Graph Toolkit.
  3. Umieść podstawowe komponenty w widokach: <Login />, <PeoplePicker /> i <Agenda />.
  4. Ustaw precyzyjne zakresy dla każdej strony (np. User.Read, Calendars.Read i People.Read) i sprawdź zachowanie zgody użytkownika.
  5. Bezpiecznie dostosuj wygląd, stosując tokeny motywu i zatwierdzone części CSS, zachowując jednocześnie podstawowe wzorce wizualne Microsoft.
  6. Wdroż wersję pilotażową dla niewielkiej, ograniczonej grupy użytkowników, aby zebrać kluczowe uwagi dotyczące UX i wydajności przed szerszym wdrożeniem.

Lista kontrolna przed wdrożeniem produkcyjnym (bezpieczeństwo i niezawodność)

Zanim udostępnisz nową aplikację Microsoft 365 w środowisku produkcyjnym, przejdź przez tę kluczową listę kontrolną bezpieczeństwa i niezawodności:

  • Stosuj minimalne zakresy uprawnień i ściśle rozdzielaj uprawnienia delegowane przez użytkownika od uprawnień aplikacji działających bez użytkownika.
  • Zapewnij bezpieczne przechowywanie wszystkich sekretów i certyfikatów, korzystając z Azure Key Vault.
  • Sprawdź konfigurację czasu życia tokenów, przepływy odświeżania oraz prawidłową obsługę ponawiania z opóźnieniem (backoff) dla błędów HTTP 429 i 503.
  • Przetestuj zasady dostępu warunkowego, w tym wymagania uwierzytelniania wieloskładnikowego i zgodności urządzeń, w połączeniu z przepływami pracy zestawu narzędzi.
  • Wdroż solidną telemetrię, która rejestruje identyfikatory żądań, opóźnienia żądań, współczynniki trafień pamięci podręcznej oraz błędy Graph zwracane do aplikacji.
  • Przeprowadź dokładny audyt dostępności, obejmujący nawigację klawiaturą, strukturę punktów orientacyjnych (landmarks) i odpowiednie kontrasty kolorów.
  • Wykonaj przegląd zgodności z marką, aby upewnić się, że standardy projektowe Fluent UI i korporacyjna powłoka marki są ze sobą spójne.

Uwagi dotyczące wydajności

Użytkownicy w przedsiębiorstwach nie mają cierpliwości do ospałego oprogramowania. Aby aplikacja działała błyskawicznie:

  • W pełni wykorzystaj komponenty, które stosują leniwe ładowanie danych i inteligentne buforowanie po stronie klienta, aby interfejs reagował płynnie.
  • Unikaj kosztownych wywołań typu N+1, preferując tam, gdzie to możliwe, natywne listy i komponenty wielopozycyjne zestawu narzędzi.
  • Grupuj zapytania o użytkowników przy wzbogacaniu wyników wyszukiwania i zawsze poprawnie stronicuj długie listy firmowe.

Personalizacja bez utraty zaufania

Dostosowanie do tożsamości wizualnej firmy jest kluczowe, ale nadmierna personalizacja niszczy zaufanie użytkowników. Pamiętaj o następujących granicach:

  • Korzystaj ze standardowych właściwości komponentów (takich jak zakresy dat i filtry zapytań), zamiast tworzyć rozgałęzienia i modyfikować podstawowy kod źródłowy.
  • Stosuj motyw w aplikacji, używając tokenów projektowych Fluent i zmiennych CSS, a jednocześnie dbaj o to, by znane wzorce Microsoft pozostały łatwo rozpoznawalne.
  • Rozszerzaj funkcjonalność w czysty sposób, korzystając z wbudowanych hooków zdarzeń (takich jak onSelect czy onSignIn), aby bezpiecznie uruchamiać dalsze procesy.

Typowe pułapki (i rozwiązania)

Nawet przy dobrych narzędziach programiści czasem napotykają przeszkody. Oto najczęstsze pułapki i sposoby ich naprawy:

  • "Działa lokalnie, nie działa na produkcji": Zwykle wynika z niezgodności identyfikatora URI przekierowania lub zakresów. Dokładnie sprawdź ustawienia rejestracji aplikacji w portalu Azure.
  • Wyszukiwanie osób zwraca puste wyniki: Zazwyczaj wynika z brakujących uprawnień People.Read lub User.ReadBasic.All albo z restrykcyjnych ograniczeń widoczności katalogu.
  • Pusty widżet agendy: Sprawdź, czy zgoda na uprawnienie Calendars.Read została wyraźnie udzielona lub czy typ skrzynki użytkownika nie jest obsługiwany.
  • Nieskończone monity o logowanie: Często wywoływane przez blokowanie plików cookie stron trzecich lub rygorystyczne kontrolki sesji w zasadach dostępu warunkowego. Przetestuj w oknie prywatnego przeglądania i przejrzyj swoje zasady dostępu warunkowego.

Pomysły na wskaźniki KPI, które potwierdzą korzyść

Jeśli musisz przekonać kierownictwo lub interesariuszy, że przejście na ujednolicony zestaw narzędzi było tego warte, śledź te kluczowe wskaźniki efektywności:

  • Czas do pierwszej funkcji przy budowie podstawowych możliwości, takich jak uwierzytelnianie, agendy i selektory osób, przed wdrożeniem zestawu narzędzi i po jego wdrożeniu.
  • Łączna liczba błędów uwierzytelniania i powiązanych zgłoszeń do działu pomocy technicznej na tysiąc aktywnych użytkowników.
  • Czas do pełnej interaktywności strony dla rozbudowanych widoków, takich jak Agenda i PeoplePicker.
  • Liczba defektów lub naruszeń dostępności wykrytych w każdym cyklu wydania.
  • Wyjątki dotyczące zgodności i bezpieczeństwa zgłoszone podczas formalnych przeglądów projektu, z jasnym celem osiągnięcia zera.

Ścieżka migracji (najpierw zastąp najbardziej ryzykowne elementy własne)

Nie musisz refaktoryzować całej aplikacji z dnia na dzień. Przyjmij podejście etapowe i zacznij od zastąpienia najbardziej ryzykownego kodu własnego:

  1. Zamień swoją kruchą, własną implementację OAuth na standardowy komponent Login.
  2. Zastąp własną logikę wyszukiwania w katalogu, ograniczaną przez limity żądań, solidnym komponentem PeoplePicker.
  3. Zaktualizuj ręczny widżet kalendarza, aby korzystał z gotowego komponentu Agenda.
  4. Dodawaj funkcje dodatkowe, takie jak Files, Tasks i wskaźniki obecności, zgodnie z wymaganiami planu produktu.

Podsumowanie

Przestań marnować cenne godziny inżynierskie na odtwarzanie Microsoft od zera. Korzystanie z narzędzi takich jak Microsoft Graph Toolkit daje bezpieczne, spójne wizualnie z marką M365 elementy budulcowe, którym użytkownicy przedsiębiorstw z natury ufają, a audytorzy bezpieczeństwa chętnie je akceptują. Dzięki temu zespół programistów może skupić się na unikalnych funkcjach produktu i logice biznesowej, które faktycznie wyróżniają Cię na tle konkurencji.

Aby zgłębić ten temat i poznać praktyczne strategie wdrożeniowe z pierwszej ręki, koniecznie posłuchaj naszego towarzyszącego odcinka podcastu: Build Consistent M365 Apps with Microsoft Graph Toolkit.

Entities in this article

Microsoft Graph Microsoft Entra ID Compliance React Caching Microsoft Microsoft 365 Application registration Conditional Access Fluent UI

Related articles

RSS