$lang['tuto'] = "hướng dẫn"; ?>$lang['tuto'] = "hướng dẫn"; ?> Tích hợp đăng nhập Microsoft 365 trong ứng dụng

Tích hợp đăng nhập Microsoft 365 trong ứng dụng web Flask

Tích hợp đăng nhập Microsoft 365 trong ứng dụng web Flask
Tích hợp đăng nhập Microsoft 365 trong ứng dụng web Flask

Thiết lập xác thực Microsoft 365

Khi phát triển các ứng dụng web cho mục đích giáo dục, việc tích hợp các tài nguyên của tổ chức như email Microsoft 365 có thể nâng cao trải nghiệm người dùng và hợp lý hóa quy trình đăng nhập. Việc tích hợp này đặc biệt hữu ích khi các ứng dụng cần tuân thủ các chính sách CNTT của trường đại học, điều này có thể hạn chế việc tạo ứng dụng theo thông tin xác thực của trường đại học.

Trong trường hợp này, sử dụng tài khoản Microsoft Azure cá nhân để thiết lập ứng dụng là một giải pháp thiết thực. Tuy nhiên, những thách thức có thể nảy sinh, chẳng hạn như các vấn đề về hạn chế của người thuê nhà khi cố gắng đăng nhập bằng email của trường đại học. Điều này đòi hỏi một chiến lược để quản lý tài khoản người dùng trên nhiều đối tượng thuê khác nhau mà không ảnh hưởng đến chức năng hoặc tính bảo mật của ứng dụng.

Yêu cầu Sự miêu tả
oauth.remote_app() Khởi tạo phiên bản ứng dụng từ xa mới cho OAuth; nó được sử dụng để xử lý giao tiếp với các nhà cung cấp OAuth.
flask_oauthlib.client.OAuth Tiện ích mở rộng Flask để tích hợp các nhà cung cấp dịch vụ OAuth, giúp xác thực thông qua giao thức OAuth dễ dàng hơn.
authorized_response() Là một phần của Flask-OAuthlib, phương thức này truy xuất phản hồi OAuth được ủy quyền từ hàm gọi lại.
session['oauth_token'] Được sử dụng để lưu trữ mã thông báo OAuth trong phiên để truy cập sau, rất quan trọng để quản lý phiên người dùng và trạng thái xác thực.
microsoft.authorize() Phương thức chuyển hướng đến URL ủy quyền của nhà cung cấp OAuth nơi người dùng có thể ủy quyền cho ứng dụng.
url_for() Hàm trợ giúp trong Flask tạo điểm cuối cho một hàm xem nhất định. Nó rất hữu ích cho việc tạo URL cho các chuyển hướng.

Giải thích về tích hợp Flask với xác thực Microsoft 365

Các tập lệnh giao diện người dùng và phụ trợ cùng nhau tạo điều kiện thuận lợi cho việc tích hợp đăng nhập Microsoft 365 vào ứng dụng web Flask. Ở giao diện người dùng, một trang HTML đơn giản hiển thị một nút mà khi được nhấp vào sẽ kích hoạt chức năng JavaScript để chuyển hướng người dùng đến phần phụ trợ để xác thực. Quá trình này bắt đầu bằng việc loginWithMicrosoft() chức năng thay đổi vị trí cửa sổ thành tuyến phụ trợ do Flask xử lý. Kịch bản phụ trợ sử dụng FlaskFlask-OAuthlib để quản lý luồng OAuth bằng nền tảng nhận dạng của Microsoft.

Trong phần phụ trợ, oauth.remote_app() lệnh thiết lập kết nối với điểm cuối OAuth của Microsoft bằng thông tin xác thực ứng dụng. Các microsoft.authorize() bắt đầu quá trình xác thực bằng cách chuyển hướng người dùng đến trang ủy quyền của Microsoft. Sau khi người dùng đăng nhập và cấp các quyền cần thiết, nhà cung cấp OAuth sẽ gửi họ trở lại ứng dụng bằng URL gọi lại được chỉ định trong url_for('authorized'). Các authorized_response() phương thức xử lý cuộc gọi lại này, truy xuất mã thông báo truy cập cần thiết để xác nhận xác thực và duy trì phiên của người dùng.

Giao diện xác thực Microsoft 365 phía trước

HTML và JavaScript được sử dụng cho giao diện người dùng

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

Luồng xác thực phụ trợ với Microsoft 365

Python và Flask được sử dụng cho phần phụ trợ

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)

Thiết lập nâng cao cho xác thực Microsoft 365 trong Flask

Để giải quyết vấn đề tích hợp đăng nhập Microsoft 365 mà không cần sử dụng email do trường đại học quản lý, điều cần thiết là phải hiểu khái niệm về ứng dụng nhiều người thuê trong Azure. Ứng dụng nhiều người thuê cho phép người dùng từ nhiều người thuê Azure AD truy cập vào ứng dụng, lý tưởng cho môi trường đại học nơi sinh viên có thể có các email tên miền khác nhau. Thiết lập này yêu cầu định cấu hình ứng dụng Azure để chấp nhận đăng nhập từ bất kỳ đối tượng thuê Azure AD nào, việc này được thực hiện bằng cách đặt 'signInAudience' trong tệp kê khai ứng dụng thành 'AzureADMultipleOrgs'.

Thay đổi cấu hình này cho phép sinh viên sử dụng email trường đại học của họ, ngay cả khi ứng dụng ban đầu được tạo bằng email cá nhân. Nó cũng đơn giản hóa việc quản lý vì nhà phát triển không cần thêm từng người dùng vào đối tượng thuê riêng lẻ. Cách tiếp cận này tận dụng tính linh hoạt của các dịch vụ quản lý danh tính của Azure để đảm bảo khả năng truy cập rộng hơn và tích hợp liền mạch trong các ứng dụng giáo dục.

Các câu hỏi thường gặp về tích hợp Microsoft 365 trong ứng dụng Flask

  1. Xác thực nhiều bên thuê Azure AD là gì?
  2. Xác thực nhiều đối tượng thuê Azure AD cho phép các ứng dụng phục vụ người dùng từ nhiều đối tượng thuê Azure AD, không chỉ đối tượng mà ứng dụng đã được đăng ký.
  3. Làm cách nào để định cấu hình ứng dụng Flask của tôi cho Azure nhiều đối tượng thuê?
  4. Bạn cần sửa đổi đăng ký ứng dụng trong Azure để chấp nhận đăng nhập từ bất kỳ đối tượng thuê Azure AD nào bằng cách đặt 'signInAudience' trong tệp kê khai.
  5. Lợi ích của việc sử dụng là gì oauth.remote_app() trong bình?
  6. Chức năng này đơn giản hóa việc kết nối với các nhà cung cấp OAuth bằng cách quản lý luồng OAuth, bao gồm cả việc truy xuất và lưu trữ mã thông báo.
  7. Tại sao người dùng có thể gặp lỗi cho biết tài khoản của họ không tồn tại trong đối tượng thuê?
  8. Điều này thường xảy ra nếu ứng dụng không được thiết lập để truy cập nhiều người thuê hoặc nếu người dùng không được đăng ký làm người dùng bên ngoài trong đối tượng thuê.
  9. Làm cách nào để xử lý lỗi trong quá trình xác thực trong Flask?
  10. Thực hiện xử lý lỗi trong authorized_response() chức năng bắt và phản hồi các lỗi như từ chối truy cập hoặc thiếu mã thông báo.

Suy nghĩ cuối cùng về tích hợp xác thực Microsoft 365

Tóm lại, việc tích hợp đăng nhập Microsoft 365 vào các ứng dụng Flask mà không cần sử dụng email của trường đại học bao gồm việc thiết lập ứng dụng Azure với thông tin xác thực cá nhân và định cấu hình ứng dụng đó để có quyền truy cập nhiều người thuê. Cách tiếp cận này không chỉ tránh được những hạn chế mà các trường đại học có thể áp đặt khi sử dụng email chính thức để tạo ứng dụng mà còn đơn giản hóa quy trình đăng nhập cho người dùng trên nhiều đối tượng thuê khác nhau. Bằng cách làm theo các phương pháp hay nhất cho OAuth và xử lý các lỗi tiềm ẩn một cách hiệu quả, nhà phát triển có thể cung cấp trải nghiệm liền mạch và an toàn cho người dùng.