python - 跨大学网络保留 Google Drive session 数据

标签 python windows oauth enterprise google-drive-api

这似乎是一个问题,我看到很多人都遇到过这个问题,但尚未得到有效解决。如何在企业级别维护 Google 云端硬盘?

我在我的大学担任学生程序员,他们刚刚切换到 Google Apps for Education,并希望使用 Google 云端硬盘让学生随时随地访问校园计算机数据。

我们的校园系统称为 Labnet,它使用 iSCSI 和逻辑卷管理器启动 Windows 7 的全新副本。每次学生启动盒子时,都会闻到完全相同的新 PC 气味。因此,谷歌驱动器添加到注册表的 oAuth key 在重新启动时被吹走了,驱动器文件夹和应用程序数据文件夹也是如此,所有这些都像在 C 驱动器上一样。

我们为初次使用的用户构建了一个包装器,用于在校园内设置 Drive,它将默认安装位置重定向到网络驱动器,并将包含 sync_config.db 和 snapshot.db 文件的应用数据文件夹复制到网络备份,并导出网络驱动器的驱动器 key 。在登录时,我们有一个脚本检查备份,将它们全部恢复到 C:\users\admin\appdata\local\drive,并将 oAuth token 导入注册表。

理论上,它工作正常。实际上,它是如此。该设置在一个实验室中运行良好,所有机器都运行完全相同的硬件并启动相同的镜像文件。当我们尝试将 key 和应用程序数据导入到运行略有不同的硬件和软件的实验室时,我们得到 Error -2146893813 CryptUnprotectData, 'Key not valid for use in specified state'.无效数据

我不认为 oAuth 无论如何都与机器的硬件或软件相关联,但看起来确实如此。

有谁知道以允许用户访问数据而无需在登录时不断设置驱动器的方式来持久保存此数据的方法吗?

我将在此处附上完整代码。它不仅仅是一个标准代码块,所以这是一个链接。

GoogleDriveLabnetConfig.py 是将默认驱动器位置更改为 H: 驱动器的自定义包装器。 https://www.dropbox.com/s/fb27936jmm87w0l/GoogleDriveLabnetConfig.py

MUNGoogleDriveDaemon.py 是一个包装器,它在 C: 和 H: 之间来回复制用户的 Appdata,并实际启动 Google Drive。我们不允许用户独立于此守护程序启动 Google 云端硬盘,因为不会备份快照。

https://www.dropbox.com/s/z32t3bjluwl0wf5/MUNGoogleDriveDaemon.py

如果有人可以帮助解决这个问题,请随时在您自己的设置中重用代码。

编辑:也许可以在启动时检查每台计算机的硬件和软件,并导入为特定硬件/软件配对生成的 key ,但这会导致用户每次更换实验室时都必须租​​用凭据如果我们改变图像,还是在旧实验室中。这不是一个非常优雅的解决方案。

最佳答案

不太可能,但请尝试检查机器上的系统时间。 Oauth 要求所有客户端和服务器都同步时间。

关于python - 跨大学网络保留 Google Drive session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11852554/

相关文章:

python - 使用 Google+ 进行身份验证时在 session 中存储 oauth 凭据时出错

python - 在 Django 中创建自定义用户模型的指南

python - 从 Python 中的字典创建 XML

python - 在 Python 中过滤文本数据

c++ - Windows:如何计算运行 c/c++ 应用程序所需的时间?

c++ - "child control"、 "child window"和 "child window control"之间有区别吗?

python - 我想在第一个空行开始解析文本文件

python - 使用 Python 3.8 中的赋值表达式,为什么我们需要在 `as` 中使用 `with` ?

c++ - 相当于windows事件的跨平台

docker - 尝试使用 docker 启动 keycloak,但它没有启动。操作 ("add") 失败 - 地址 :