我正在使用Google登录来验证/授权用户访问我的Flask web应用程序。这部分工作正常
我需要根据用户所属的组组织用户。在谷歌上使用admin,我创建了一个组,只有来自该组的用户才能使用该应用程序
问题是它只对我有效。可能是因为我是管理员/域所有者
其他所有人在获取令牌时都会出错
我正在使用google_auth_oauthlib.flow
我使用的范围是:
"https://www.googleapis.com/auth/userinfo.profile",
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/admin.directory.group.readonly",
"openid"
当该组之外的人尝试访问时,日志显示下一个错误
When getting token: (invalid_grant) Bad Request
Traceback (most recent call last):
File "/tmp/tmpfhwmhvrg/__main__/licsrv/admin/admin.py", line 150, in view_cb_google
f.fetch_token(authorization_response=authorization_response)
File "/tmp/tmpfhwmhvrg/pip36/google_auth_oauthlib/google_auth_oauthlib/flow.py", line 241, in fetch_token
self.client_config['token_uri'], **kwargs)
File "/tmp/tmpfhwmhvrg/pip36/requests_oauthlib/requests_oauthlib/oauth2_session.py", line 244, in fetch_token
self._client.parse_request_body_response(r.text, scope=self.scope)
File "/tmp/tmpfhwmhvrg/pip36/oauthlib/oauthlib/oauth2/rfc6749/clients/base.py", line 411, in parse_request_body_response
self.token = parse_token_response(body, scope=scope)
File "/tmp/tmpfhwmhvrg/pip36/oauthlib/oauthlib/oauth2/rfc6749/parameters.py", line 379, in parse_token_response
validate_token_parameters(params)
File "/tmp/tmpfhwmhvrg/pip36/oauthlib/oauthlib/oauth2/rfc6749/parameters.py", line 386, in validate_token_parameters
raise_from_error(params.get('error'), params)
File "/tmp/tmpfhwmhvrg/pip36/oauthlib/oauthlib/oauth2/rfc6749/errors.py", line 415, in raise_from_error
raise cls(**kwargs)
oauthlib.oauth2.rfc6749.errors.InvalidGrantError: (invalid_grant) Bad Request
权限
https://www.googleapis.com/auth/admin.directory.group.readonly
对非管理员用户不可用解决方案是编写应用程序脚本,该脚本将在访问用户上下文时执行,并检查用户是否在组中或是否在组中具有任何权限
上面的权限已替换为
https://www.googleapis.com/auth/groups
权限,这足以执行应用程序脚本应用程序脚本示例如下,它只是项目中使用的脚本的一部分
注意
在创建新脚本和函数之前,将脚本项目链接到GoogleDev项目是很重要的,否则它可能无法执行脚本函数
相关问题 更多 >
编程相关推荐