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
- 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 oauth.remote_app() 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 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.