Microsoft 365 인증 설정
교육 목적으로 웹 애플리케이션을 개발할 때 Microsoft 365 이메일과 같은 기관 리소스를 통합하면 사용자 경험을 향상하고 로그인 프로세스를 간소화할 수 있습니다. 이 통합은 응용 프로그램이 대학 자격 증명으로 응용 프로그램 생성을 제한할 수 있는 대학 IT 정책과 일치해야 할 때 특히 유용합니다.
이 시나리오에서는 개인 Microsoft Azure 계정을 사용하여 애플리케이션을 설정하는 것이 실용적인 솔루션입니다. 그러나 대학 이메일로 로그인을 시도할 때 테넌트 제한 문제와 같은 문제가 발생할 수 있습니다. 이를 위해서는 앱의 기능이나 보안을 손상시키지 않고 다양한 테넌트의 사용자 계정을 관리하는 전략이 필요합니다.
명령 | 설명 |
---|---|
oauth.remote_app() | OAuth에 대한 새 원격 애플리케이션 인스턴스를 초기화합니다. OAuth 공급자와의 통신을 처리하는 데 사용됩니다. |
flask_oauthlib.client.OAuth | OAuth 서비스 제공자를 통합하기 위한 Flask 확장으로, OAuth 프로토콜을 통해 인증을 더 쉽게 만듭니다. |
authorized_response() | Flask-OAuthlib의 일부인 이 메서드는 콜백 함수에서 승인된 OAuth 응답을 검색합니다. |
session['oauth_token'] | 나중에 액세스하기 위해 세션에 OAuth 토큰을 저장하는 데 사용되며 사용자 세션 및 인증 상태를 관리하는 데 중요합니다. |
microsoft.authorize() | 사용자가 앱을 승인할 수 있는 OAuth 공급자의 승인 URL로 리디렉션하는 메서드입니다. |
url_for() | 주어진 뷰 함수에 대한 엔드포인트를 생성하는 Flask의 도우미 함수입니다. 리디렉션용 URL을 생성하는 데 유용합니다. |
Microsoft 365 인증과 Flask 통합 설명
프런트엔드 및 백엔드 스크립트를 함께 사용하면 Microsoft 365 로그인을 Flask 웹 애플리케이션에 쉽게 통합할 수 있습니다. 프런트엔드에서 간단한 HTML 페이지는 클릭 시 인증을 위해 사용자를 백엔드로 리디렉션하는 JavaScript 기능을 트리거하는 버튼을 제공합니다. 이 프로세스는 loginWithMicrosoft() Flask가 처리하는 백엔드 경로로 창 위치를 변경하는 함수입니다. 백엔드 스크립트는 다음을 사용합니다. Flask 그리고 Flask-OAuthlib Microsoft의 ID 플랫폼으로 OAuth 흐름을 관리합니다.
백엔드에서는 삼 명령은 애플리케이션 자격 증명을 사용하여 Microsoft의 OAuth 끝점과의 연결을 설정합니다. 그만큼 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)
Flask의 Microsoft 365 인증을 위한 고급 설정
대학에서 관리하는 이메일을 사용하지 않고 Microsoft 365 로그인 통합 문제를 해결하려면 Azure의 다중 테넌트 애플리케이션 개념을 이해하는 것이 중요합니다. 다중 테넌트 애플리케이션을 사용하면 여러 Azure AD 테넌트의 사용자가 앱에 액세스할 수 있으며, 이는 학생들이 서로 다른 도메인 이메일을 가질 수 있는 대학 설정에 이상적입니다. 이 설정을 위해서는 애플리케이션 매니페스트의 'signInAudience'를 'AzureADMultipleOrgs'로 설정하여 Azure AD 테넌트의 로그인을 허용하도록 Azure 애플리케이션을 구성해야 합니다.
이 구성 변경을 통해 응용 프로그램이 처음에 개인 이메일로 생성된 경우에도 학생은 대학 이메일을 사용할 수 있습니다. 또한 개발자가 각 사용자를 테넌트에 개별적으로 추가할 필요가 없으므로 관리가 단순화됩니다. 이 접근 방식은 Azure ID 관리 서비스의 유연성을 활용하여 교육 애플리케이션에서 더 넓은 접근성과 원활한 통합을 보장합니다.
Flask 앱의 Microsoft 365 통합에 대한 일반적인 질문
- Azure AD 다중 테넌트 인증이란 무엇입니까?
- Azure AD 다중 테넌트 인증을 통해 애플리케이션은 애플리케이션이 등록된 테넌트뿐만 아니라 여러 Azure AD 테넌트의 사용자에게 서비스를 제공할 수 있습니다.
- Azure 다중 테넌트용 Flask 앱을 어떻게 구성하나요?
- 매니페스트에서 'signInAudience'를 설정하여 Azure AD 테넌트의 로그인을 허용하려면 Azure에서 애플리케이션 등록을 수정해야 합니다.
- 사용하면 어떤 이점이 있나요? 삼 플라스크에서?
- 이 기능은 토큰 검색 및 저장을 포함하여 OAuth 흐름을 관리하여 OAuth 공급자에 대한 연결을 단순화합니다.
- 사용자에게 자신의 계정이 테넌트에 존재하지 않는다는 오류가 표시될 수 있는 이유는 무엇입니까?
- 이는 일반적으로 애플리케이션이 다중 테넌트 액세스용으로 설정되지 않았거나 사용자가 테넌트에 외부 사용자로 등록되지 않은 경우에 발생합니다.
- Flask에서 인증 프로세스 중 오류를 어떻게 처리하나요?
- 오류 처리를 구현합니다. authorized_response() 접근 거부, 토큰 누락 등의 오류를 포착하고 대응하는 기능을 제공합니다.
Microsoft 365 인증 통합에 대한 최종 생각
결론적으로, 대학 이메일을 사용하지 않고 Microsoft 365 로그인을 Flask 애플리케이션에 통합하려면 개인 자격 증명으로 Azure 애플리케이션을 설정하고 다중 테넌트 액세스를 위해 구성해야 합니다. 이 접근 방식은 대학이 애플리케이션 생성을 위해 공식 이메일을 사용하는 데 부과할 수 있는 제한 사항을 우회할 뿐만 아니라 다양한 테넌트의 사용자에 대한 로그인 프로세스를 단순화합니다. OAuth 모범 사례를 따르고 잠재적인 오류를 효과적으로 처리함으로써 개발자는 원활하고 안전한 사용자 경험을 제공할 수 있습니다.