Eksplorowanie biblioteki uwierzytelniania firmy Microsoft
Biblioteka Microsoft Authentication Library (MSAL) umożliwia deweloperom uzyskiwanie tokenów zabezpieczających z Platforma tożsamości Microsoft w celu uwierzytelniania użytkowników i uzyskiwania dostępu do zabezpieczonych internetowych interfejsów API. Może służyć do zapewnienia bezpiecznego dostępu do programu Microsoft Graph, innych interfejsów API firmy Microsoft, internetowych interfejsów API innych firm lub własnego internetowego interfejsu API. Biblioteka MSAL obsługuje wiele różnych architektur aplikacji i platform, takich jak .NET, JavaScript, Java, Python, Android i iOS.
Biblioteka MSAL zapewnia wiele sposobów uzyskiwania tokenów przy użyciu spójnego interfejsu API dla wielu platform. Korzystanie z biblioteki MSAL zapewnia następujące korzyści:
- Nie trzeba bezpośrednio używać bibliotek OAuth ani kodu względem protokołu w aplikacji.
- Uzyskuje tokeny w imieniu użytkownika lub w imieniu aplikacji (jeśli dotyczy platformy).
- Utrzymuje pamięć podręczną tokenów i odświeża tokeny, gdy zbliżają się one do wygaśnięcia. Nie musisz samodzielnie obsługiwać wygasania tokenów.
- Ułatwia określenie odbiorców, których aplikacja ma się zalogować.
- Pomaga skonfigurować aplikację z plików konfiguracji.
- Ułatwia rozwiązywanie problemów z aplikacją przez uwidacznianie wyjątków, rejestrowania i telemetrii z możliwością działania.
Typy aplikacji i scenariusze
W ramach biblioteki MSAL token można uzyskać z wielu typów aplikacji: aplikacji internetowych, internetowych interfejsów API, aplikacji jednostronicowych (JavaScript), aplikacji mobilnych i natywnych oraz demonów i aplikacji po stronie serwera. Biblioteka MSAL obecnie obsługuje platformy i struktury wymienione w poniższej tabeli.
| Biblioteka | Obsługiwane platformy i struktury |
|---|---|
| Biblioteka MSAL dla systemu Android | Android |
| MSAL Angular | Aplikacje jednostronicowe z platformami Angular i Angular.js |
| Biblioteka MSAL dla systemów iOS i macOS | iOS i macOS |
| MSAL Go (wersja zapoznawcza) | Windows, macOS, Linux |
| MSAL Java | Windows, macOS, Linux |
| MSAL.js | Struktury JavaScript/TypeScript, takie jak Vue.js, Ember.js lub Durandal.js |
| MSAL.NET | .NET Framework, .NET, .NET MAUI, WINUI, Xamarin Android, Xamarin iOS, platforma uniwersalna systemu Windows |
| Węzeł BIBLIOTEKI MSAL | Aplikacje internetowe z platformą Express, aplikacje klasyczne z aplikacjami konsoli Electron, międzyplatformowymi |
| MSAL Python | Windows, macOS, Linux |
| MSAL React | Aplikacje jednostronicowe z bibliotekami react i react (Next.js, Gatsby.js) |
Przepływy uwierzytelniania
W poniższej tabeli przedstawiono niektóre z różnych przepływów uwierzytelniania udostępnianych przez bibliotekę Microsoft Authentication Library (MSAL). Te przepływy mogą być używane w różnych scenariuszach aplikacji.
| Przepływ uwierzytelniania | Umożliwia | Obsługiwane typy aplikacji |
|---|---|---|
| Kod autoryzacji | Logowanie użytkownika i dostęp do internetowych interfejsów API w imieniu użytkownika. | Aplikacja klasyczna, mobilna, jednostronicowa (SPA) (wymaga PKCE), sieć Web |
| Poświadczenia klienta | Dostęp do internetowych interfejsów API przy użyciu tożsamości samej aplikacji. Zazwyczaj używane do komunikacji między serwerami i zautomatyzowanych skryptów, które nie wymagają interakcji z użytkownikiem. | Daemon |
| Kod urządzenia | Logowanie użytkownika i dostęp do internetowych interfejsów API w imieniu użytkownika na urządzeniach z ograniczonymi danymi wejściowymi, takich jak inteligentne telewizory i urządzenia IoT. Używane również przez aplikacje interfejsu wiersza polecenia. | Komputer stacjonarny, Mobilny |
| Niejawne udzielenie | Logowanie użytkownika i dostęp do internetowych interfejsów API w imieniu użytkownika. Niejawny przepływ udzielania nie jest już zalecany — zamiast tego użyj kodu autoryzacji z protokołem PKCE. | Jednostronicowa aplikacja (SPA), sieć Web |
| W imieniu (OBO) | Dostęp z internetowego interfejsu API "nadrzędnego" do internetowego interfejsu API "podrzędnego" w imieniu użytkownika. Tożsamość użytkownika i uprawnienia delegowane są przekazywane do podrzędnego interfejsu API z nadrzędnego interfejsu API. | Internetowy interfejs API |
| Nazwa użytkownika/hasło (ROPC) | Umożliwia aplikacji logowanie użytkownika przez bezpośrednie obsługiwanie hasła. Przepływ ROPC NIE jest zalecany. | Komputer stacjonarny, Mobilny |
| Zintegrowane uwierzytelnianie systemu Windows (IWA) | Umożliwia aplikacjom na komputerach przyłączonych do domeny lub firmy Microsoft entra uzyskiwanie tokenu w trybie dyskretnym (bez żadnej interakcji interfejsu użytkownika od użytkownika). | Komputer stacjonarny, Mobilny |
Publiczny klient i poufne aplikacje klienckie
Biblioteka Microsoft Authentication Library (MSAL) definiuje dwa typy klientów; klienci publiczni i klienci poufni. Klient to jednostka oprogramowania, która ma unikatowy identyfikator przypisany przez dostawcę tożsamości. Typy klientów różnią się w zależności od ich możliwości bezpiecznego uwierzytelniania za pomocą serwera autoryzacji i przechowywania poufnych informacji dowodowych tożsamości, aby nie można było uzyskać do niego dostępu ani nie być znane użytkownikowi w zakresie jego dostępu.
Podczas badania publicznego lub poufnego charakteru danego klienta oceniamy możliwość potwierdzenia tożsamości tego klienta na serwerze autoryzacji. Jest to ważne, ponieważ serwer autoryzacji musi mieć możliwość zaufania tożsamości klienta w celu wystawienia tokenów dostępu.
Publiczne aplikacje klienckie działają na urządzeniach, takich jak klasyczne, bez przeglądarkowe interfejsy API, aplikacje przeglądarki mobilnej lub klienckiej. Nie mogą być zaufane, aby bezpiecznie przechowywać wpisy tajne aplikacji, dzięki czemu mogą uzyskiwać dostęp tylko do internetowych interfejsów API w imieniu użytkownika. Za każdym razem, gdy źródło lub skompilowany kod bajtowy danej aplikacji jest przesyłane w dowolnym miejscu, w jakim można je odczytywać, dezasemblować lub w inny sposób sprawdzać przez niezaufane strony. Ponieważ obsługują one również tylko przepływy klientów publicznych i nie mogą przechowywać wpisów tajnych czasu konfiguracji, nie mogą mieć wpisów tajnych klienta.
Poufne aplikacje klienckie działają na serwerach, takich jak aplikacje internetowe, aplikacje internetowego interfejsu API lub aplikacje usługi/demona. Są one uważane za trudne do uzyskania dostępu przez użytkowników lub osoby atakujące i w związku z tym mogą odpowiednio przechowywać wpisy tajne w czasie konfiguracji w celu potwierdzenia tożsamości. Identyfikator klienta jest udostępniany za pośrednictwem przeglądarki internetowej, ale wpis tajny jest przekazywany tylko w kanale wstecznym i nigdy nie jest bezpośrednio udostępniany.