Konfigurowanie uwierzytelniania Microsoft 365
Podczas tworzenia aplikacji internetowych do celów edukacyjnych integracja zasobów instytucjonalnych, takich jak poczta e-mail Microsoft 365, może poprawić komfort użytkownika i usprawnić procesy logowania. Integracja ta jest szczególnie przydatna, gdy aplikacje muszą być zgodne z uniwersytecką polityką informatyczną, co może ograniczać tworzenie aplikacji na podstawie referencji uniwersyteckich.
W tym scenariuszu praktycznym rozwiązaniem jest użycie osobistego konta Microsoft Azure do skonfigurowania aplikacji. Mogą jednak pojawić się wyzwania, takie jak problemy z ograniczeniami najemców podczas próby zalogowania się przy użyciu uniwersyteckiego adresu e-mail. Wymaga to strategii zarządzania kontami użytkowników w różnych dzierżawach bez pogarszania funkcjonalności i bezpieczeństwa aplikacji.
| Komenda | Opis |
|---|---|
| oauth.remote_app() | Inicjuje nową zdalną instancję aplikacji dla OAuth; służy do obsługi komunikacji z dostawcami OAuth. |
| flask_oauthlib.client.OAuth | Rozszerzenie Flask do integracji dostawców usług OAuth, ułatwiające uwierzytelnianie za pomocą protokołów OAuth. |
| authorized_response() | Ta metoda będąca częścią Flask-OAuthlib pobiera autoryzowaną odpowiedź OAuth z funkcji wywołania zwrotnego. |
| session['oauth_token'] | Służy do przechowywania tokena OAuth w sesji w celu późniejszego dostępu, co ma kluczowe znaczenie dla zarządzania sesjami użytkowników i stanem uwierzytelniania. |
| microsoft.authorize() | Metoda przekierowująca do adresu URL autoryzacji dostawcy OAuth, pod którym użytkownik może autoryzować aplikację. |
| url_for() | Funkcja pomocnicza w Flasku, która generuje punkt końcowy dla danej funkcji widoku. Przydaje się do generowania adresów URL dla przekierowań. |
Wyjaśnienie integracji Flaska z uwierzytelnianiem Microsoft 365
Skrypty frontendowe i backendowe wspólnie ułatwiają integrację logowania Microsoft 365 z aplikacją internetową Flask. Na froncie prosta strona HTML zawiera przycisk, którego kliknięcie uruchamia funkcję JavaScript, która przekierowuje użytkownika do backendu w celu uwierzytelnienia. Proces ten rozpoczyna się od funkcja, która zmienia lokalizację okna na trasę zaplecza obsługiwaną przez Flask. Używany jest skrypt backendu I do zarządzania przepływem OAuth za pomocą platformy tożsamości firmy Microsoft.
Na zapleczu, polecenie ustanawia połączenie z punktami końcowymi OAuth firmy Microsoft przy użyciu poświadczeń aplikacji. The funkcja inicjuje proces uwierzytelniania poprzez przekierowanie użytkownika na stronę autoryzacyjną firmy Microsoft. Po zalogowaniu się użytkownika i przyznaniu niezbędnych uprawnień dostawca OAuth odsyła go z powrotem do aplikacji przy użyciu adresu URL wywołania zwrotnego określonego w . The authorized_response() metoda przetwarza to wywołanie zwrotne, pobierając token dostępu potrzebny do potwierdzenia uwierzytelnienia i utrzymania sesji użytkownika.
Frontendowy interfejs uwierzytelniania Microsoft 365
HTML i JavaScript użyte do frontendu
<html><head><title>Login with Microsoft</title></head><body><button onclick="loginWithMicrosoft()">Sign In with Microsoft</button><script>function loginWithMicrosoft() {window.location.href = '/auth/microsoft';}</script></body></html>
Przepływ uwierzytelniania zaplecza w Microsoft 365
Python i Flask używane do backendu
from flask import Flask, redirect, url_for, sessionfrom flask_oauthlib.client import OAuthimport osapp = Flask(__name__)app.secret_key = 'development'oauth = OAuth(app)microsoft = oauth.remote_app('microsoft',consumer_key='YOUR_APP_ID',consumer_secret='YOUR_APP_SECRET',request_token_params={'scope': 'User.Read'}base_url='https://graph.microsoft.com/v1.0/',request_token_url=None,access_token_method='POST',access_token_url='https://login.microsoftonline.com/common/oauth2/v2.0/token',authorize_url='https://login.microsoftonline.com/common/oauth2/v2.0/authorize')@app.route('/')def index():return '<h1>Welcome to the Flask App</h1>' + '<a href="/login">Login with Microsoft</a>'@app.route('/login')def login():return microsoft.authorize(callback=url_for('authorized', _external=True))@app.route('/login/authorized')def authorized():response = microsoft.authorized_response()if response is None or response.get('access_token') is None:return 'Access denied: reason={0} error={1}'.format(request.args['error'], request.args['error_description'])session['oauth_token'] = (response['access_token'], '')return 'Logged in as id={0}'.format(session['oauth_token'])@microsoft.tokengetterdef get_microsoft_oauth_token():return session.get('oauth_token')if __name__ == '__main__':app.run(debug=True)
Zaawansowana konfiguracja uwierzytelniania Microsoft 365 w Flask
Aby rozwiązać problem integracji logowania do usługi Microsoft 365 bez korzystania z poczty e-mail zarządzanej przez uczelnię, konieczne jest zrozumienie koncepcji aplikacji obsługujących wielu dzierżawców na platformie Azure. Aplikacja obsługująca wielu dzierżawców umożliwia użytkownikom z wielu dzierżaw usługi Azure AD dostęp do aplikacji, co idealnie sprawdza się w przypadku uczelni, w których studenci mogą mieć różne adresy e-mail w domenach. Ta konfiguracja wymaga skonfigurowania aplikacji platformy Azure tak, aby akceptowała logowania z dowolnej dzierżawy usługi Azure AD, co odbywa się poprzez ustawienie elementu „signInAudience” w manifeście aplikacji na „AzureADMultipleOrgs”.
Ta zmiana konfiguracji umożliwia studentom korzystanie z poczty uniwersyteckiej, nawet jeśli aplikacja została pierwotnie utworzona przy użyciu prywatnego adresu e-mail. Upraszcza także zarządzanie, ponieważ deweloper nie musi indywidualnie dodawać każdego użytkownika do najemcy. To podejście wykorzystuje elastyczność usług zarządzania tożsamością platformy Azure, aby zapewnić szerszą dostępność i bezproblemową integrację z aplikacjami edukacyjnymi.
- Co to jest uwierzytelnianie wielodostępne w usłudze Azure AD?
- Uwierzytelnianie wielodostępne w usłudze Azure AD umożliwia aplikacjom obsługę użytkowników z wielu dzierżaw usługi Azure AD, a nie tylko tej, w której aplikacja została zarejestrowana.
- Jak skonfigurować aplikację Flask dla wielu dzierżawców platformy Azure?
- Należy zmodyfikować rejestrację aplikacji na platformie Azure, aby akceptować logowania z dowolnej dzierżawy usługi Azure AD, ustawiając element „signInAudience” w manifeście.
- Jakie są korzyści ze stosowania w Flasku?
- Ta funkcja upraszcza łączenie się z dostawcami OAuth poprzez zarządzanie przepływem OAuth, w tym pobieraniem i przechowywaniem tokenów.
- Dlaczego użytkownik może otrzymać błąd informujący, że jego konto nie istnieje w dzierżawie?
- Zwykle dzieje się tak, jeśli aplikacja nie jest skonfigurowana do dostępu dla wielu dzierżawców lub jeśli użytkownik nie jest zarejestrowany jako użytkownik zewnętrzny w dzierżawie.
- Jak mogę poradzić sobie z błędami podczas procesu uwierzytelniania w Flasku?
- Zaimplementuj obsługę błędów w pliku funkcja wychwytywania i reagowania na błędy, takie jak odmowa dostępu lub brakujące tokeny.
Podsumowując, integracja logowania Microsoft 365 z aplikacjami Flask bez korzystania z uniwersyteckiej poczty e-mail wymaga skonfigurowania aplikacji Azure z osobistymi poświadczeniami i skonfigurowania jej pod kątem dostępu dla wielu dzierżawców. Takie podejście nie tylko omija ograniczenia, jakie uniwersytety mogą nałożyć na używanie oficjalnych wiadomości e-mail do tworzenia aplikacji, ale także upraszcza proces logowania użytkowników w różnych dzierżawach. Postępując zgodnie z najlepszymi praktykami dotyczącymi protokołu OAuth i skutecznie radząc sobie z potencjalnymi błędami, programiści mogą zapewnić płynną i bezpieczną obsługę użytkownika.