$lang['tuto'] = "tutorial"; ?>$lang['tuto'] = "tutorial"; ?> Integrasikan Log Masuk Microsoft 365 dalam Apl Web Flask

Integrasikan Log Masuk Microsoft 365 dalam Apl Web Flask

Integrasikan Log Masuk Microsoft 365 dalam Apl Web Flask
Integrasikan Log Masuk Microsoft 365 dalam Apl Web Flask

Menyediakan Pengesahan Microsoft 365

Apabila membangunkan aplikasi web untuk tujuan pendidikan, menyepadukan sumber institusi seperti e-mel Microsoft 365 boleh meningkatkan pengalaman pengguna dan memperkemas proses log masuk. Penyepaduan ini amat berguna apabila aplikasi perlu diselaraskan dengan dasar IT universiti, yang mungkin menyekat penciptaan aplikasi di bawah kelayakan universiti.

Dalam senario ini, menggunakan akaun Microsoft Azure peribadi untuk menyediakan aplikasi adalah penyelesaian praktikal. Walau bagaimanapun, cabaran boleh timbul, seperti isu dengan sekatan penyewa apabila cuba log masuk dengan e-mel universiti. Ini memerlukan strategi untuk mengurus akaun pengguna merentas penyewa yang berbeza tanpa menjejaskan fungsi atau keselamatan apl.

Perintah Penerangan
oauth.remote_app() Memulakan contoh aplikasi jauh baharu untuk OAuth; ia digunakan untuk mengendalikan komunikasi dengan pembekal OAuth.
flask_oauthlib.client.OAuth Sambungan Flask untuk menyepadukan penyedia perkhidmatan OAuth, menjadikannya lebih mudah untuk mengesahkan melalui protokol OAuth.
authorized_response() Sebahagian daripada Flask-OAuthlib, kaedah ini mendapatkan semula respons OAuth yang dibenarkan daripada fungsi panggil balik.
session['oauth_token'] Digunakan untuk menyimpan token OAuth dalam sesi untuk akses kemudian, penting untuk mengurus sesi pengguna dan keadaan pengesahan.
microsoft.authorize() Kaedah yang mengubah hala ke URL kebenaran pembekal OAuth di mana pengguna boleh membenarkan apl tersebut.
url_for() Fungsi pembantu dalam Flask yang menjana titik akhir untuk fungsi pandangan yang diberikan. Ia berguna untuk menjana URL untuk ubah hala.

Menjelaskan Integrasi Flask dengan Pengesahan Microsoft 365

Skrip frontend dan backend bersama-sama memudahkan penyepaduan log masuk Microsoft 365 ke dalam aplikasi web Flask. Pada bahagian hadapan, halaman HTML ringkas membentangkan butang yang, apabila diklik, mencetuskan fungsi JavaScript untuk mengubah hala pengguna ke bahagian belakang untuk pengesahan. Proses ini bermula dengan loginWithMicrosoft() fungsi, yang mengubah lokasi tetingkap kepada laluan hujung belakang yang dikendalikan oleh Flask. Skrip bahagian belakang menggunakan Flask dan Flask-OAuthlib untuk mengurus aliran OAuth dengan platform identiti Microsoft.

Di bahagian belakang, bahagian oauth.remote_app() arahan menyediakan sambungan dengan titik akhir OAuth Microsoft menggunakan bukti kelayakan aplikasi. The microsoft.authorize() fungsi memulakan proses pengesahan dengan mengalihkan pengguna ke halaman kebenaran Microsoft. Selepas pengguna log masuk dan memberikan kebenaran yang diperlukan, pembekal OAuth menghantar mereka kembali ke aplikasi menggunakan URL panggil balik yang dinyatakan dalam url_for('authorized'). The authorized_response() kaedah memproses panggilan balik ini, mendapatkan semula token akses yang diperlukan untuk mengesahkan pengesahan dan mengekalkan sesi pengguna.

Muka Depan Pengesahan Microsoft 365

HTML dan JavaScript digunakan untuk bahagian hadapan

<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>

Aliran Pengesahan Bahagian Belakang dengan Microsoft 365

Python dan Flask digunakan untuk bahagian belakang

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)

Persediaan Lanjutan untuk Pengesahan Microsoft 365 dalam Flask

Untuk menangani isu penyepaduan log masuk Microsoft 365 tanpa menggunakan e-mel yang diuruskan oleh universiti, adalah penting untuk memahami konsep aplikasi berbilang penyewa dalam Azure. Aplikasi berbilang penyewa membolehkan pengguna daripada berbilang penyewa Azure AD mengakses apl tersebut, yang sesuai untuk tetapan universiti di mana pelajar mungkin mempunyai e-mel domain yang berbeza. Persediaan ini memerlukan konfigurasi aplikasi Azure untuk menerima log masuk daripada mana-mana penyewa Azure AD, yang dilakukan dengan menetapkan 'signInAudience' dalam manifes aplikasi kepada 'AzureADMultipleOrgs'.

Perubahan konfigurasi ini membolehkan pelajar menggunakan e-mel universiti mereka, walaupun aplikasi itu pada mulanya dibuat dengan e-mel peribadi. Ia juga memudahkan pengurusan kerana pembangun tidak perlu menambah setiap pengguna secara individu kepada penyewa. Pendekatan ini memanfaatkan fleksibiliti perkhidmatan pengurusan identiti Azure untuk memastikan kebolehcapaian yang lebih luas dan integrasi yang lancar dalam aplikasi pendidikan.

Soalan Lazim Mengenai Penyepaduan Microsoft 365 dalam Aplikasi Flask

  1. Apakah pengesahan berbilang penyewa Azure AD?
  2. Pengesahan berbilang penyewa Azure AD membolehkan aplikasi memberi perkhidmatan kepada pengguna daripada berbilang penyewa Azure AD, bukan hanya penyewa di mana aplikasi itu didaftarkan.
  3. Bagaimanakah cara saya mengkonfigurasi apl Flask saya untuk penyewa berbilang Azure?
  4. Anda perlu mengubah suai pendaftaran aplikasi dalam Azure untuk menerima log masuk daripada mana-mana penyewa Azure AD dengan menetapkan 'signInAudience' dalam manifes.
  5. Apakah faedah menggunakan oauth.remote_app() dalam Flask?
  6. Fungsi ini memudahkan penyambungan kepada penyedia OAuth dengan mengurus aliran OAuth, termasuk pengambilan dan penyimpanan token.
  7. Mengapakah pengguna mungkin mendapat ralat menyatakan akaun mereka tidak wujud dalam penyewa?
  8. Ini biasanya berlaku jika aplikasi tidak disediakan untuk akses berbilang penyewa atau jika pengguna tidak didaftarkan sebagai pengguna luar dalam penyewa.
  9. Bagaimanakah saya boleh mengendalikan ralat semasa proses pengesahan dalam Flask?
  10. Laksanakan pengendalian ralat dalam authorized_response() berfungsi untuk menangkap dan bertindak balas terhadap ralat seperti penafian akses atau token yang hilang.

Fikiran Akhir tentang Penyepaduan Pengesahan Microsoft 365

Kesimpulannya, menyepadukan log masuk Microsoft 365 ke dalam aplikasi Flask tanpa menggunakan e-mel universiti melibatkan penyediaan aplikasi Azure dengan kelayakan peribadi dan mengkonfigurasinya untuk akses berbilang penyewa. Pendekatan ini bukan sahaja memintas sekatan yang mungkin dikenakan oleh universiti untuk menggunakan e-mel rasmi untuk pembuatan aplikasi tetapi juga memudahkan proses log masuk untuk pengguna merentas penyewa yang berbeza. Dengan mengikuti amalan terbaik untuk OAuth dan mengendalikan kemungkinan ralat dengan berkesan, pembangun boleh memberikan pengalaman pengguna yang lancar dan selamat.