إعداد مصادقة Microsoft 365
عند تطوير تطبيقات الويب للأغراض التعليمية، يمكن أن يؤدي دمج الموارد المؤسسية مثل البريد الإلكتروني في Microsoft 365 إلى تحسين تجربة المستخدم وتبسيط عمليات تسجيل الدخول. يعد هذا التكامل مفيدًا بشكل خاص عندما تحتاج التطبيقات إلى التوافق مع سياسات تكنولوجيا المعلومات بالجامعة، مما قد يقيد إنشاء التطبيقات بموجب بيانات اعتماد الجامعة.
في هذا السيناريو، يعد استخدام حساب Microsoft Azure الشخصي لإعداد التطبيق حلاً عمليًا. ومع ذلك، يمكن أن تنشأ تحديات، مثل المشكلات المتعلقة بقيود المستأجر عند محاولة تسجيل الدخول باستخدام البريد الإلكتروني الجامعي. وهذا يتطلب استراتيجية لإدارة حسابات المستخدمين عبر مستأجرين مختلفين دون المساس بوظيفة التطبيق أو أمانه.
يأمر | وصف |
---|---|
oauth.remote_app() | تهيئة مثيل تطبيق بعيد جديد لـ OAuth؛ يتم استخدامه للتعامل مع الاتصالات مع موفري OAuth. |
flask_oauthlib.client.OAuth | امتداد Flask لدمج موفري خدمة OAuth، مما يسهل عملية المصادقة عبر بروتوكولات OAuth. |
authorized_response() | هذه الطريقة جزء من Flask-OAuthlib، وتقوم باسترداد استجابة OAuth المعتمدة من وظيفة رد الاتصال. |
session['oauth_token'] | يُستخدم لتخزين رمز OAuth المميز في الجلسة للوصول إليه لاحقًا، وهو أمر بالغ الأهمية لإدارة جلسات المستخدم وحالة المصادقة. |
microsoft.authorize() | طريقة تعيد التوجيه إلى عنوان URL لتفويض موفر OAuth حيث يمكن للمستخدم ترخيص التطبيق. |
url_for() | وظيفة مساعدة في Flask تقوم بإنشاء نقطة نهاية لوظيفة عرض معينة. إنه مفيد لإنشاء عناوين URL لعمليات إعادة التوجيه. |
شرح تكامل Flask مع مصادقة Microsoft 365
تسهل البرامج النصية للواجهة الأمامية والخلفية معًا دمج تسجيل دخول Microsoft 365 في تطبيق ويب Flask. على الواجهة الأمامية، تعرض صفحة HTML بسيطة زرًا، عند النقر عليه، يؤدي إلى تشغيل وظيفة JavaScript لإعادة توجيه المستخدم إلى الواجهة الخلفية للمصادقة. تبدأ هذه العملية بال loginWithMicrosoft() وظيفة، والتي تغير موقع النافذة إلى مسار الواجهة الخلفية الذي تتم معالجته بواسطة Flask. يستخدم البرنامج النصي الخلفي Flask و Flask-OAuthlib لإدارة تدفق OAuth باستخدام النظام الأساسي لهوية Microsoft.
في الواجهة الخلفية، oauth.remote_app() يقوم الأمر بإعداد اتصال بنقاط نهاية OAuth الخاصة بـ Microsoft باستخدام بيانات اعتماد التطبيق. ال microsoft.authorize() تبدأ الوظيفة عملية المصادقة عن طريق إعادة توجيه المستخدم إلى صفحة ترخيص Microsoft. بعد أن يقوم المستخدم بتسجيل الدخول ومنح الأذونات اللازمة، يرسلها موفر OAuth مرة أخرى إلى التطبيق باستخدام عنوان URL لرد الاتصال المحدد في url_for('authorized'). ال authorized_response() تقوم الطريقة بمعالجة رد الاتصال هذا، واسترداد رمز الوصول المطلوب لتأكيد المصادقة والحفاظ على جلسة المستخدم.
واجهة مصادقة Microsoft 365 الأمامية
HTML وJavaScript يستخدمان للواجهة الأمامية
<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>
تدفق مصادقة الواجهة الخلفية مع Microsoft 365
يستخدم Python و Flask للواجهة الخلفية
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)
الإعداد المتقدم لمصادقة Microsoft 365 في Flask
لمعالجة مشكلة تكامل تسجيل الدخول إلى Microsoft 365 دون استخدام بريد إلكتروني تديره الجامعة، من الضروري فهم مفهوم التطبيقات متعددة المستأجرين في Azure. يتيح التطبيق متعدد المستأجرين للمستخدمين من مستأجري Azure AD المتعددين الوصول إلى التطبيق، وهو مثالي لإعدادات الجامعة حيث قد يكون لدى الطلاب عناوين بريد إلكتروني مختلفة للمجال. يتطلب هذا الإعداد تكوين تطبيق Azure لقبول تسجيلات الدخول من أي مستأجر Azure AD، ويتم ذلك عن طريق تعيين "signInAudience" في بيان التطبيق إلى "AzureADMultipleOrgs".
يسمح تغيير التكوين هذا للطلاب باستخدام عناوين البريد الإلكتروني الجامعية الخاصة بهم، حتى لو تم إنشاء التطبيق في البداية باستخدام بريد إلكتروني شخصي. كما أنه يبسط الإدارة نظرًا لأن المطور لا يحتاج إلى إضافة كل مستخدم بشكل فردي إلى المستأجر. يعمل هذا النهج على تعزيز مرونة خدمات إدارة الهوية من Azure لضمان إمكانية الوصول على نطاق أوسع والتكامل السلس في التطبيقات التعليمية.
أسئلة شائعة حول تكامل Microsoft 365 في تطبيقات Flask
- ما هي مصادقة Azure AD متعددة المستأجرين؟
- تسمح مصادقة Azure AD متعددة المستأجرين للتطبيقات بخدمة المستخدمين من مستأجرين متعددين في Azure AD، وليس فقط المستأجر الذي تم تسجيل التطبيق فيه.
- كيف أقوم بتكوين تطبيق Flask الخاص بي لمستأجري Azure المتعددين؟
- تحتاج إلى تعديل تسجيل التطبيق في Azure لقبول تسجيلات الدخول من أي مستأجر Azure AD عن طريق تعيين "signInAudience" في البيان.
- ما هي فوائد استخدام oauth.remote_app() في قارورة؟
- تعمل هذه الوظيفة على تبسيط الاتصال بموفري OAuth من خلال إدارة تدفق OAuth، بما في ذلك استرداد الرمز المميز وتخزينه.
- لماذا قد يحصل المستخدم على خطأ يفيد بأن حسابه غير موجود في المستأجر؟
- يحدث هذا عادةً إذا لم يتم إعداد التطبيق للوصول متعدد المستأجرين أو إذا لم يتم تسجيل المستخدم كمستخدم خارجي في المستأجر.
- كيف يمكنني معالجة الأخطاء أثناء عملية المصادقة في Flask؟
- تنفيذ معالجة الأخطاء في authorized_response() وظيفة لالتقاط الأخطاء والرد عليها مثل رفض الوصول أو الرموز المميزة المفقودة.
الأفكار النهائية حول تكامل مصادقة Microsoft 365
في الختام، يتضمن دمج تسجيل دخول Microsoft 365 في تطبيقات Flask دون استخدام البريد الإلكتروني الجامعي إعداد تطبيق Azure باستخدام بيانات الاعتماد الشخصية وتكوينه للوصول متعدد المستأجرين. لا يقتصر هذا الأسلوب على التحايل على القيود التي قد تفرضها الجامعات على استخدام رسائل البريد الإلكتروني الرسمية لإنشاء الطلبات، بل يعمل أيضًا على تبسيط عملية تسجيل الدخول للمستخدمين عبر المستأجرين المختلفين. ومن خلال اتباع أفضل ممارسات OAuth والتعامل مع الأخطاء المحتملة بفعالية، يمكن للمطورين توفير تجربة مستخدم سلسة وآمنة.