Logowanie użytkowników w przykładowej aplikacji internetowej platformy Python Flask
W tym artykule zapoznasz się z aplikacją internetową platformy Python Flask zabezpieczoną przez Tożsamość zewnętrzna Microsoft Entra. W tym przykładzie przedstawiono środowisko logowania dla klientów uwierzytelniających się w aplikacji internetowej platformy Python Flask. Przykładowa aplikacja internetowa używa biblioteki Microsoft Authentication Library for Python (MSAL Python) do obsługi uwierzytelniania użytkowników.
Wymagania wstępne
- Visual Studio Code lub inny edytor kodu.
- Python 3+.
- Dzierżawa zewnętrzna. Aby go utworzyć, wybierz jedną z następujących metod:
- (Zalecane) Użyj rozszerzenia Tożsamość zewnętrzna Microsoft Entra, aby skonfigurować dzierżawę zewnętrzną bezpośrednio w programie Visual Studio Code.
- Utwórz nową dzierżawę zewnętrzną w centrum administracyjnym firmy Microsoft Entra.
Rejestrowanie aplikacji internetowej
Aby umożliwić aplikacji logowanie użytkowników w usłudze Microsoft Entra, Tożsamość zewnętrzna Microsoft Entra należy pamiętać o tworzonej aplikacji. Rejestracja aplikacji ustanawia relację zaufania między aplikacją a firmą Microsoft Entra. Podczas rejestrowania aplikacji identyfikator zewnętrzny generuje unikatowy identyfikator znany jako identyfikator aplikacji (klienta) — wartość używana do identyfikowania aplikacji podczas tworzenia żądań uwierzytelniania.
W poniższych krokach pokazano, jak zarejestrować aplikację w centrum administracyjnym firmy Microsoft Entra:
Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako deweloper aplikacji.
Jeśli masz dostęp do wielu dzierżaw, użyj ikony Ustawienia w górnym menu, aby przełączyć się do dzierżawy zewnętrznej z menu Katalogi i subskrypcje.
Przejdź do aplikacji tożsamości>> Rejestracje aplikacji.
Wybierz pozycję + Nowa rejestracja.
Na wyświetlonej stronie Rejestrowanie aplikacji ;
- Wprowadź zrozumiałą nazwę aplikacji wyświetlaną użytkownikom aplikacji, na przykład ciam-client-app.
- W obszarze Obsługiwane typy kont wybierz pozycję Konta tylko w tym katalogu organizacyjnym.
Wybierz pozycję Zarejestruj.
Po pomyślnej rejestracji zostanie wyświetlone okienko Przegląd aplikacji. Zarejestruj identyfikator aplikacji (klienta), który ma być używany w kodzie źródłowym aplikacji.
Aby określić typ aplikacji do rejestracji aplikacji, wykonaj następujące kroki:
- W obszarze Zarządzanie wybierz pozycję Uwierzytelnianie
- Na stronie Konfiguracje platformy wybierz pozycję Dodaj platformę, a następnie wybierz opcję Sieć Web.
- W polu Identyfikatory URI przekierowania wprowadź wartość
http://localhost:3000/getAToken
. Ten identyfikator URI przekierowania to lokalizacja, w której serwer autoryzacji wysyła token dostępu. Możesz dostosować go do swojego przypadku użycia. - Wybierz pozycję Konfiguruj, aby zapisać zmiany.
Dodawanie wpisu tajnego klienta aplikacji
Utwórz klucz tajny klienta dla zarejestrowanej aplikacji. Aplikacja używa wpisu tajnego klienta, aby udowodnić swoją tożsamość, gdy żąda tokenów.
- Na stronie Rejestracje aplikacji wybierz utworzoną aplikację (np. ciam-client-app), aby otworzyć stronę Przegląd.
- W obszarze Zarządzanie wybierz pozycję Certyfikaty i wpisy tajne.
- Wybierz Nowy klucz tajny klienta.
- W polu Opis wprowadź opis wpisu tajnego klienta (na przykład wpis tajny klienta aplikacji ciam).
- W obszarze Wygasa wybierz czas trwania, dla którego wpis tajny jest prawidłowy (zgodnie z regułami zabezpieczeń organizacji), a następnie wybierz pozycję Dodaj.
- Zarejestruj wartość wpisu tajnego. Użyjesz tej wartości do konfiguracji w późniejszym kroku. Wartość wpisu tajnego nie zostanie ponownie wyświetlona i nie będzie pobierana w żaden sposób po przejściu z obszaru Certyfikaty i wpisy tajne. Upewnij się, że został on zarejestrowany.
Wyrażanie zgody administratora
Po zarejestrowaniu aplikacji zostanie przypisane uprawnienie User.Read . Jednak ponieważ dzierżawa jest dzierżawą zewnętrzną, użytkownicy sami nie mogą wyrazić zgody na to uprawnienie. Administrator musi wyrazić zgodę na to uprawnienie w imieniu wszystkich użytkowników w dzierżawie:
Na stronie Rejestracje aplikacji wybierz utworzoną aplikację (np. ciam-client-app), aby otworzyć stronę Przegląd.
W obszarze Zarządzanie wybierz pozycję Uprawnienia interfejsu API.
- Wybierz pozycję Udziel zgody administratora dla <swojej nazwy> dzierżawy, a następnie wybierz pozycję Tak.
- Wybierz pozycję Odśwież, a następnie sprawdź, czy dla nazwy dzierżawy jest wyświetlana wartość> w <obszarze Stan uprawnienia.
Tworzenie przepływu użytkownika
Wykonaj następujące kroki, aby utworzyć przepływ użytkownika, który klient może użyć do zalogowania się lub zarejestrowania się w aplikacji.
Zaloguj się do centrum administracyjnego firmy Microsoft Entra jako co najmniej administrator przepływu użytkownika identyfikatora zewnętrznego.
Jeśli masz dostęp do wielu dzierżaw, użyj ikony Ustawienia w górnym menu, aby przełączyć się do dzierżawy zewnętrznej z menu Katalogi i subskrypcje.
Przejdź do sekcji Identity External Identities User flows (Przepływy> użytkownika tożsamości>zewnętrznych tożsamości).
Wybierz pozycję + Nowy przepływ użytkownika.
Na stronie Tworzenie:
Wprowadź nazwę przepływu użytkownika, na przykład SignInSignUpSample.
Na liście Dostawcy tożsamości wybierz pozycję Konta e-mail. Ten dostawca tożsamości umożliwia użytkownikom logowanie się lub tworzenie konta przy użyciu ich adresu e-mail.
Uwaga
Dodatkowi dostawcy tożsamości będą wyświetlani w tym miejscu tylko po skonfigurowaniu federacji z nimi. Jeśli na przykład skonfigurujesz federację z usługą Google lub Facebookiem, będzie można wybrać tych dodatkowych dostawców tożsamości w tym miejscu.
W obszarze Konta e-mail możesz wybrać jedną z dwóch opcji. Na potrzeby tego samouczka wybierz pozycję Poczta e-mail z hasłem.
- Wiadomość e-mail z hasłem: umożliwia nowym użytkownikom zarejestrowanie się i zalogowanie się przy użyciu adresu e-mail jako nazwy logowania i hasła jako poświadczeń pierwszego czynnika.
- Wyślij wiadomość e-mail z jednorazowym kodem dostępu: umożliwia nowym użytkownikom zarejestrowanie się i zalogowanie się przy użyciu adresu e-mail jako nazwy logowania i jednorazowego kodu dostępu jako poświadczeń pierwszego czynnika. Jednorazowy kod dostępu poczty e-mail musi być włączony na poziomie dzierżawy (wszyscy dostawcy>tożsamości e-mail jednorazowego kodu dostępu), aby ta opcja została udostępniona na poziomie przepływu użytkownika.
W obszarze Atrybuty użytkownika wybierz atrybuty, które chcesz zebrać od użytkownika podczas rejestracji. Wybierając pozycję Pokaż więcej, możesz wybrać atrybuty i oświadczenia dla kraju/regionu, nazwy wyświetlanej i kodu pocztowego. Wybierz przycisk OK. (Użytkownicy są monitowani tylko o atrybuty podczas rejestracji po raz pierwszy).
Wybierz pozycję Utwórz. Nowy przepływ użytkownika zostanie wyświetlony na liście Przepływy użytkownika. W razie potrzeby odśwież stronę.
Aby włączyć samoobsługowe resetowanie hasła, wykonaj kroki opisane w artykule Włączanie samoobsługowego resetowania hasła.
Kojarzenie aplikacji internetowej z przepływem użytkownika
Aby użytkownicy klienta widzieli środowisko rejestracji lub logowania podczas korzystania z aplikacji, musisz skojarzyć aplikację z przepływem użytkownika. Chociaż wiele aplikacji może być skojarzonych z przepływem użytkownika, pojedyncza aplikacja może być skojarzona tylko z jednym przepływem użytkownika.
W menu paska bocznego wybierz pozycję Tożsamość.
Wybierz pozycję Tożsamości zewnętrzne, a następnie przepływy użytkownika.
Na stronie Przepływy użytkownika wybierz utworzoną wcześniej nazwę przepływu użytkownika, na przykład SignInSignUpSample.
W obszarze Użyj wybierz pozycję Aplikacje.
Wybierz Dodaj aplikację.
Wybierz aplikację z listy, na przykład ciam-client-app , lub użyj pola wyszukiwania, aby znaleźć aplikację, a następnie wybierz ją.
Naciśnij przycisk Wybierz.
Po skojarzeniu aplikacji z przepływem użytkownika możesz przetestować przepływ użytkownika, symulując środowisko rejestracji lub logowania użytkownika z poziomu centrum administracyjnego firmy Microsoft Entra. W tym celu wykonaj kroki opisane w artykule Testowanie przepływu rejestracji i logowania użytkownika.
Klonowanie lub pobieranie przykładowej aplikacji internetowej
Aby uzyskać przykładową aplikację, możesz ją sklonować z usługi GitHub lub pobrać jako plik .zip.
Aby sklonować przykład, otwórz wiersz polecenia i przejdź do miejsca, w którym chcesz utworzyć projekt, a następnie wprowadź następujące polecenie:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-python.git
Pobierz plik .zip. Wyodrębnij go do ścieżki pliku, w której długość nazwy jest mniejsza niż 260 znaków.
Instalowanie zależności projektu
Otwórz okno konsoli i przejdź do katalogu zawierającego przykładową aplikację internetową platformy Flask:
cd flask-web-app
Konfigurowanie środowiska wirtualnego
py -m venv .venv .venv\scripts\activate
Uruchom następujące polecenia, aby zainstalować zależności aplikacji:
python3 -m pip install -r requirements.txt
Konfigurowanie przykładowej aplikacji internetowej
Otwórz pliki projektu w programie Visual Studio Code lub edytorze, którego używasz.
Utwórz plik env w folderze głównym projektu przy użyciu pliku .env.sample jako przewodnika.
W pliku env podaj następujące zmienne środowiskowe:
CLIENT_ID
to identyfikator aplikacji (klienta) zarejestrowanej wcześniej aplikacji.CLIENT_SECRET
to wartość wpisu tajnego aplikacji skopiowana wcześniej.AUTHORITY
to adres URL identyfikujący urząd tokenu. Powinien on mieć format https://{poddomena}.ciamlogin.com/{poddomena}.onmicrosoft.com. Zastąp poddomenę poddomeną Directory (tenant). Jeśli na przykład domena podstawowa dzierżawy tocontoso.onmicrosoft.com
, użyj poleceniacontoso
. Jeśli nie masz poddomeny dzierżawy, dowiedz się, jak odczytywać szczegóły dzierżawy.
Upewnij się, że identyfikator URI przekierowania jest prawidłowo skonfigurowany. Zarejestrowany wcześniej identyfikator URI przekierowania powinien być zgodny z konfiguracją. Ten przykład domyślnie ustawia ścieżkę identyfikatora URI przekierowania na
/getAToken
. Jest on skonfigurowany w pliku app_config.py jako REDIRECT_PATH.
Uruchamianie i testowanie przykładowej aplikacji internetowej
Uruchom aplikację, aby wyświetlić środowisko logowania podczas odtwarzania.
Uwaga
W tym przykładzie użyto biblioteki innej firmy do obsługi tożsamości języka Python. Biblioteka nie jest oficjalnie utrzymywana przez firmę Microsoft, ale jest zalecana do użytku. Ta biblioteka ułatwia dodawanie uwierzytelniania do aplikacji internetowej, ponieważ tworzy abstrakcję wielu szczegółów biblioteki MSAL w języku Python.
W terminalu uruchom następujące polecenie:
python3 -m flask run --debug --host=localhost --port=3000
Możesz użyć wybranego portu. Powinno to być podobne do portu zarejestrowanego wcześniej identyfikatora URI przekierowania.
Otwórz przeglądarkę, a następnie przejdź do strony
http://localhost:3000
. Powinna zostać wyświetlona strona podobna do poniższego zrzutu ekranu:Po zakończeniu ładowania strony wybierz link Zaloguj się . Zostanie wyświetlony monit o zalogowanie się.
Na stronie logowania wpisz swój adres e-mail, wybierz pozycję Dalej, wpisz hasło, a następnie wybierz pozycję Zaloguj. Jeśli nie masz konta, wybierz pozycję Nie masz konta? Utwórz jeden link, który uruchamia przepływ rejestracji.
Jeśli wybierzesz opcję rejestracji, przejdziesz przez przepływ sign-uo. Wypełnij swój adres e-mail, jednorazowy kod dostępu, nowe hasło i więcej szczegółów konta, aby ukończyć cały przepływ rejestracji.
Po zalogowaniu się lub utworzeniu konta nastąpi przekierowanie z powrotem do aplikacji internetowej. Zostanie wyświetlona strona podobna do poniższego zrzutu ekranu:
Wybierz pozycję Wyloguj, aby wylogować użytkownika z aplikacji internetowej lub wybierz pozycję Wywołaj podrzędny interfejs API , aby wykonać wywołanie punktu końcowego programu Microsoft Graph.
Jak to działa
Po wybraniu linku Zaloguj aplikacja inicjuje żądanie uwierzytelniania i przekierowuje użytkowników do Tożsamość zewnętrzna Microsoft Entra. Następnie użytkownik loguje się lub zarejestruje stronę na wyświetlonej stronie. Po podaniu wymaganych poświadczeń i wyrażaniu zgody na wymagane zakresy Tożsamość zewnętrzna Microsoft Entra przekierowuje użytkownika z powrotem do aplikacji internetowej za pomocą kodu autoryzacji. Następnie aplikacja internetowa używa tego kodu autoryzacji do uzyskania tokenu z Tożsamość zewnętrzna Microsoft Entra.
Po wybraniu linku Wylogowywanie aplikacja wyczyści swoją sesję, przekierowuje użytkownika do punktu końcowego wylogowania Tożsamość zewnętrzna Microsoft Entra, aby powiadomić go o wylogowaniu użytkownika. Użytkownik jest następnie przekierowywany z powrotem do aplikacji internetowej.