Привет, это мой текущий код на Python для аутентификации в моем веб-приложении.Аутентифицировать пользователя с определенным доменом (hd) в Flask с Oauth2
auth_flow = OAuth2WebServerFlow(client_id=AUTH_CLIENT_ID,
client_secret=AUTH_CLIENT_SECRET,
scope=AUTH_PLUS_SCOPE,
redirect_uri=AUTH_CALLBACK_URI)
AUTH_ARGS = {
'error': fields.Str(),
'code': fields.Str()
}
@auth_api.route('/', methods=['GET'])
def get_auth_uri():
if current_user and current_user.is_authenticated:
return redirect(LOGIN_PATH)
else:
auth_uri = auth_flow.step1_get_authorize_url()
return redirect(auth_uri)
@auth_api.route('/oauth2callback', methods=['GET'])
@use_kwargs(AUTH_ARGS)
def oauth2_callback(error, code):
if error:
return redirect(url_for('login'), code=HTTPStatus.TEMPORARY_REDIRECT)
else:
try:
authenticate(code)
return redirect(LOGIN_PATH)
except Unauthorized:
raise APIError(HTTPStatus.UNAUTHORIZED, AUTH_FAILED_MESSAGE)
@auth_api.route('/me', methods=['GET'])
@login_required
def get_current_user():
return jsonify(current_user.serialized)
@auth_api.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('login'))
def authenticate(code):
try:
credentials = _get_credentials(code)
user = User.get_or_create(credentials)
login_user(user)
except FlowExchangeError:
raise Unauthorized()
def _get_credentials(code):
return auth_flow.step2_exchange(code)
Однако, сейчас мое приложение принимает логин с любого адреса учетной записи google. Я хотел бы ограничить доступ к логину для пользователя с указанным доменом, например [email protected] Я видел несколько ответов с параметрами hd, но я не знаю, как его использовать.
Отлично, мне уже удалось добавить вторую часть кода в аутентификацию, но всегда лучше проверить его дважды. Спасибо за ответ. Я отвечу на ваш ответ, как только я получу достаточную репутацию! –
Знаете ли вы, почему мой вопрос не поддерживается? Я пытаюсь задать хороший вопрос, но никто его не повысит. –