嗨,这是我当前在我的网络应用程序中进行身份验证的python代码。
/r
但是,现在,我的应用程序正在接受来自任何Google帐户地址的登录信息。我想限制对具有指定域的用户的登录访问,例如abc@harvard.edu。我已经看到了一些高清参数的答案,但我不知道如何使用它。
答案 0 :(得分:1)
可以通过将hd参数附加到auth_uri
来设置hd参数,如下所示
auth_uri = GOOGLE_AUTH_URI
auth_uri = auth_uri + '?hd=' + 'example.com'
auth_flow = OAuth2WebServerFlow(client_id=AUTH_CLIENT_ID,
client_secret=AUTH_CLIENT_SECRET,
scope=AUTH_PLUS_SCOPE,
redirect_uri=AUTH_CALLBACK_URI,
auth_uri=auth_uri,
)
但根据我的经验,hd参数不会限制使用不同电子邮件地址的用户登录。您应该始终验证凭据。
def authenticate(code):
try:
credentials = _get_credentials(code)
if not credentials.id_token['email'].endswith('@example.com')
# abort(401)
raise Unauthorized()
user = User.get_or_create(credentials)
login_user(user)
except FlowExchangeError:
raise Unauthorized()