我是网络开发的初学者。我已经完成了相当多的命令行和一些gui python开发,并使用Drupal和Wordpress以及静态html / css完成了Web开发,但从不必担心管理会话或登录用户。在需要的少数情况下,我只使用了Drupal / Wordpress。
我致力于学习Flask / web开发并有一个我已经开始的项目。它是一个简单的3页应用程序,可以调用另一个站点的XML API(我相信它被称为REST API)。我打电话的网站是Adobe的Connect,它包含一系列电子教学课程和学生数据。以下是其“入门”API文档的链接: http://help.adobe.com/en_US/connect/9.0/webservices/WS5b3ccc516d4fbf351e63e3d11a171dce72-7ff7_SP1.html
我的应用需要能够执行以下操作: 1.当学生在我的Flask应用程序中将他们的用户ID /密码输入表单时,我想调用Connect API并将其登录到那里(因此模拟单点登录)。 2.然后,我希望将用户重定向到列出他们注册的课程的页面(此数据从Connect API中提取)。
我的问题/疑虑是关于会话和用户安全性。 Connect API文档建议只通过URL进行调用。这对我来说有点奇怪,但也许它是完全安全的?我想我只是想确保我没有明确地传递用户凭证。那么确保我的网站是https,并且呼叫是https URL(Connect的API是)正确的方法吗?
我已经在Python中有一个成功与Connect的Web服务集成的命令行脚本 - 我可以登录用户,注销,调用以返回数据。我的下一步是将其重新创建为Web应用程序。
非常感谢任何建议/提示。
答案 0 :(得分:1)
如果您使用安全HTTP(即https://...
),则只能在URL中发送登录凭据。您链接的Adobe Connect文档在一个注释中提到了这一点,但是它们显示的许多示例都使用了普通http://...
。非常误导。
登录后,您将收到一个会话,您必须使用该会话发送会话以及将来的请求。会话ID的风险较低,但无论如何,最好还是通过安全HTTP发送所有请求来保护会话ID。
然后你有第二个问题需要解决。在将用户凭据发送到Adobe Connect之前,用户凭据需要从用户的计算机传输到您自己的服务器。您的服务器也应该是安全的HTTP。
最后,就像Adobe Connect“记住”您使用所有请求传递的会话ID一样,您需要为每个用户创建一个会话,以便每次他们请求您记住它们的页面时知道要用于发送请求的Adobe会话。
对于您自己的会话ID,您可以重复使用Adobe Connection会话ID,只需将其通过cookie发送给您的用户,然后每次请求页面时都会将其恢复。更强大的解决方案要求您生成与Adobe不同的会话ID,并将会话与用户数据库表中的Adobe会话相关联。
有一个非常有用的扩展名为Flask-Login,它管理用户会话以进行身份验证。如果您决定实施自己的用户会话,可能会节省一些时间。
祝你好运。