Szybki start: logowanie użytkowników i wywoływanie programu Microsoft Graph z poziomu aplikacji internetowej Platformy Python Flask
W tym przewodniku Szybki start pobierzesz i uruchomisz przykładową aplikację internetową platformy Python Flask, która pokazuje, jak uwierzytelniać użytkowników i wywoływać interfejs API programu Microsoft Graph. Użytkownicy w organizacji firmy Microsoft Entra mogą logować się do aplikacji.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Dzierżawa firmy Microsoft Entra. Aby uzyskać więcej informacji, zobacz jak uzyskać dzierżawę firmy Microsoft Entra.
- Python 3 +
Krok 1. Rejestrowanie aplikacji
Napiwek
Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.
Wykonaj następujące kroki, aby zarejestrować aplikację w centrum administracyjnym firmy Microsoft Entra:
- Zaloguj się do centrum administracyjnego firmy Microsoft Entra jako co najmniej Administracja istrator aplikacji w chmurze.
- Jeśli masz dostęp do wielu dzierżaw, użyj ikonyUstawienia w górnym menu, aby przełączyć się do dzierżawy, w której chcesz zarejestrować aplikację z menu Katalogi i subskrypcje.
- Przejdź do pozycji Identity>Applications> Rejestracje aplikacji i wybierz pozycję Nowa rejestracja.
- Wprowadź nazwę aplikacji, na przykład python-webapp.
- W obszarze Obsługiwane typy kont wybierz pozycję Konta tylko w tym katalogu organizacyjnym.
- W obszarze Identyfikatory URI przekierowania wybierz pozycję Sieć Web dla platformy.
- Wprowadź identyfikator URI przekierowania .
http://localhost:5000/getAToken
Tę wartość można zmienić później. - Wybierz pozycję Zarejestruj.
Krok 2. Dodawanie wpisu tajnego klienta
Przykładowa aplikacja używa klucza tajnego klienta, aby udowodnić swoją tożsamość, gdy żąda tokenów. Wykonaj następujące kroki, aby utworzyć klucz tajny klienta dla aplikacji internetowej w języku Python:
- Na stronie Przegląd aplikacji zanotuj wartość Identyfikator aplikacji (klienta) do późniejszego użycia.
- W obszarze Zarządzanie wybierz pozycję Certyfikaty i wpisy tajne, a następnie w sekcji Wpisy tajne klienta wybierz pozycję Nowy klucz tajny klienta.
- Wprowadź opis wpisu tajnego klienta, pozostaw domyślne wygaśnięcie, a następnie wybierz pozycję Dodaj.
- Zapisz wartość wpisu tajnego klienta w bezpiecznej lokalizacji. Ta wartość wymaga skonfigurowania kodu i nie można go pobrać później.
Podczas tworzenia poświadczeń dla poufnej aplikacji klienckiej firma Microsoft zaleca użycie certyfikatu zamiast klucza tajnego klienta przed przeniesieniem aplikacji do środowiska produkcyjnego. Aby uzyskać więcej informacji na temat używania certyfikatu, zobacz te instrukcje.
Krok 3. Dodawanie zakresu
Ponieważ ta aplikacja loguje użytkowników, musisz dodać uprawnienia delegowane:
- W obszarze Zarządzanie wybierz pozycję Uprawnienia>interfejsu API Dodaj uprawnienie.
- Upewnij się, że wybrano kartę Interfejsy API firmy Microsoft.
- W sekcji Często używane interfejsy API firmy Microsoft wybierz pozycję Microsoft Graph.
- W sekcji Uprawnienia delegowane upewnij się, że wybrano opcję User.Read. W razie potrzeby użyj pola wyszukiwania.
- Wybierz Przyznaj uprawnienia.
Krok 4. Pobieranie przykładowej aplikacji
Pobierz przykładowy kod języka Python lub sklonuj repozytorium:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-python/
Krok 5. Konfigurowanie przykładowej aplikacji
Otwórz aplikację pobraną w środowisku IDE i przejdź do folderu głównego przykładowej aplikacji.
cd flask-web-app
Utwórz plik env w folderze głównym projektu przy użyciu pliku .env.sample jako przewodnika.
# The following variables are required for the app to run. CLIENT_ID=<Enter_your_client_id> CLIENT_SECRET=<Enter_your_client_secret> AUTHORITY=<Enter_your_authority_url>
- Ustaw wartość
CLIENT_ID
identyfikatora aplikacji (klienta) dla zarejestrowanej aplikacji dostępnej na stronie przeglądu. - Ustaw wartość
CLIENT_SECRET
klucza tajnego klienta utworzonego w certyfikatach i wpisach tajnych dla zarejestrowanej aplikacji. - Ustaw wartość
AUTHORITY
nahttps://login.microsoftonline.com/<TENANT_GUID>
wartość . Identyfikator katalogu (dzierżawy) jest dostępny na stronie przeglądu rejestracji aplikacji.
Zmienne środowiskowe są przywołyane w app_config.py i są przechowywane w osobnym pliku env , aby zachować je poza kontrolą źródła. Podany plik .gitignore uniemożliwia zaewidencjonowanie pliku env.
- Ustaw wartość
Krok 6. Uruchamianie przykładowej aplikacji
Utwórz środowisko wirtualne dla aplikacji:
py -m venv .venv .venv\scripts\activate
Zainstaluj wymagania przy użyciu polecenia
pip
:pip install -r requirements.txt
Uruchom aplikację z wiersza polecenia. Upewnij się, że aplikacja jest uruchomiona na tym samym porcie co skonfigurowany wcześniej identyfikator URI przekierowania.
flask run --debug --host=localhost --port=5000
Skopiuj adres URL https wyświetlany w terminalu, na przykład https://localhost:5000, i wklej go w przeglądarce. Zalecamy używanie prywatnej lub incognito sesji przeglądarki.
Wykonaj kroki i wprowadź niezbędne szczegóły, aby zalogować się przy użyciu konta Microsoft. Użytkownik jest proszony o podanie adresu e-mail i hasła w celu zalogowania się.
Aplikacja żąda uprawnień do utrzymania dostępu do danych, do których udzielono mu dostępu, oraz do zalogowania się i odczytania profilu, jak pokazano poniżej. Wybierz pozycję Zaakceptuj.
- Zostanie wyświetlony poniższy zrzut ekranu wskazujący, że pomyślnie zalogowaliśmy się do aplikacji.
Jak to działa
Na poniższym diagramie pokazano, jak działa przykładowa aplikacja:
Aplikacja używa
identity
pakietu do uzyskania tokenu dostępu z Platforma tożsamości Microsoft. Ten pakiet jest oparty na bibliotece Microsoft Authentication Library (MSAL) dla języka Python w celu uproszczenia uwierzytelniania i autoryzacji w aplikacjach internetowych.Token dostępu uzyskany w poprzednim kroku jest używany jako token elementu nośnego do uwierzytelniania użytkownika podczas wywoływania interfejsu API programu Microsoft Graph.
Następne kroki
Dowiedz się więcej, tworząc aplikację internetową w języku Python, która loguje użytkowników i wywołuje chroniony internetowy interfejs API w następującej serii samouczków z wieloma częściami: