使用Oauth2在Flask中使用特定托管域(hd)对用户进行身份验证

时间:2016-06-10 13:02:35

标签: python flask google-authentication

嗨,这是我当前在我的网络应用程序中进行身份验证的python代码。

/r

但是,现在,我的应用程序正在接受来自任何Google帐户地址的登录信息。我想限制对具有指定域的用户的登录访问,例如abc@harvard.edu。我已经看到了一些高清参数的答案,但我不知道如何使用它。

1 个答案:

答案 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()