我合作的机构使用Google服务,包括Gmail,文档,工作表等。该机构依赖CAS进行所有身份验证,并且访问需要身份验证的Google资源会将我带到各种重定向和身份验证方法,然后再转到实际资源。
例如,我有一个与我共享的Google文档。如果我在私人浏览器中点击了文档网址,我会被重定向到谷歌登录页面,我在其上输入我的机构电子邮件地址(不会以@ gmail.com结尾),然后点击下一步,然后转到标准的谷歌密码页面,我被路由到机构托管的CAS登录页面,我在其上输入我的用户名和密码,然后我被重定向到资源。检查网络流量似乎表明我通过CAS身份验证和重定向到实际文档之间的机构托管的Shibboleth服务进行路由。
我正在努力以编程方式解决这个问题。我目前正在使用python请求(会话)。通过常规机构CAS服务我没有问题。例如,如果机构网站包含需要CAS身份验证的页面,我可以通过CAS通过python / requests(会话)对网站进行身份验证,之后我可以以编程方式访问受保护的页面。另一方面,这种Google身份验证迷宫变得更加困难。
我知道有一些OAuth方法可以对google进行身份验证,而事件谷歌API库可以与google服务进行交互。但是,我无法通过第三方SSO / CAS / Shibboleth设置找到与此特定问题相关的任何信息痕迹。我确信那里有一些信息/知识,但我很难找到它。在浏览器中我只需要在初始谷歌登录表单上输入我的机构电子邮件地址,然后点击下一步将发送到我熟悉的CAS登录表单,我无法以编程方式通过此谷歌登录步骤。由于“下一步”按钮是一个javascript函数,似乎是在分析我的电子邮件地址,请注意它不会以“@gmail”结尾,然后将我发送到与电子邮件域相对应的SSO,我似乎无法复制python中的这一系列事件。因此,我点击谷歌的电子邮件条目表格,填写表格我的电子邮件和所有其他必需/隐藏字段,然后将该日期发回到相同的网址,因为表单没有操作属性。一旦我这样做,我就会发送到常规的谷歌密码页面,其表单现在有一些方便的隐藏会话/哈希字段/值对。但是,我应该被发送到CAS而不是密码页面。无论如何,我已经尝试在那里输入密码(包含所有其他表单字段)并将其提交回自身,但它只是再次加载相同的密码表单页面,而不会将我转发给CAS
非常感谢任何帮助或分享经验。