Zintegruj logowanie Microsoft 365 z aplikacjami internetowymi Flask

Zintegruj logowanie Microsoft 365 z aplikacjami internetowymi Flask
Zintegruj logowanie Microsoft 365 z aplikacjami internetowymi Flask

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 loginWithMicrosoft() funkcja, która zmienia lokalizację okna na trasę zaplecza obsługiwaną przez Flask. Używany jest skrypt backendu Flask I Flask-OAuthlib do zarządzania przepływem OAuth za pomocą platformy tożsamości firmy Microsoft.

Na zapleczu, oauth.remote_app() polecenie ustanawia połączenie z punktami końcowymi OAuth firmy Microsoft przy użyciu poświadczeń aplikacji. The microsoft.authorize() 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 url_for('authorized'). 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, session
from flask_oauthlib.client import OAuth
import os

app = 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.tokengetter
def 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.

Często zadawane pytania dotyczące integracji Microsoft 365 w aplikacjach Flask

  1. Co to jest uwierzytelnianie wielodostępne w usłudze Azure AD?
  2. 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.
  3. Jak skonfigurować aplikację Flask dla wielu dzierżawców platformy Azure?
  4. 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.
  5. Jakie są korzyści ze stosowania oauth.remote_app() w Flasku?
  6. Ta funkcja upraszcza łączenie się z dostawcami OAuth poprzez zarządzanie przepływem OAuth, w tym pobieraniem i przechowywaniem tokenów.
  7. Dlaczego użytkownik może otrzymać błąd informujący, że jego konto nie istnieje w dzierżawie?
  8. 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.
  9. Jak mogę poradzić sobie z błędami podczas procesu uwierzytelniania w Flasku?
  10. Zaimplementuj obsługę błędów w pliku authorized_response() funkcja wychwytywania i reagowania na błędy, takie jak odmowa dostępu lub brakujące tokeny.

Końcowe przemyślenia na temat integracji uwierzytelniania Microsoft 365

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.