我是Web开发的初学者。我已经做了相当多的命令行和一些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 应用程序。
任何建议/提示将不胜感激。
只有在使用安全 HTTP 时,在 URL 中发送登录凭据才是安全的(即 https://...
)。您链接的 Adobe Connect 文档在注释中提到了这一点,但它们显示的许多示例都使用普通http://...
。非常具有误导性。
登录后,您将收到一个会话,您必须在将来的请求中发送该会话来代替凭据。会话 ID 的风险较低,但无论如何,最好通过安全 HTTP 发送所有请求来保护会话 ID。
然后你还有第二个问题要解决。用户凭据需要先从用户的计算机传输到您自己的服务器,然后才能将其发送到 Adobe Connect。您的服务器也应该在安全的HTTP上。
最后,与Adobe Connect使用您在所有请求中传递的会话ID"记住"您的方式相同,您需要为每个用户设置一个会话,以便每次他们请求页面时您都会记住他们,并知道用于您需要发送的请求的Adobe会话。
对于您自己的会话 ID,您只需重复使用 Adobe Connection 会话 ID,只需在 Cookie 中将其发送给您的用户,然后每次他们请求页面时您都会将其取回。更强大的解决方案要求您生成自己的会话 ID,这些会话 ID 不同于 Adobe 的会话 ID,并将会话与用户数据库表中的 Adobe 会话相关联。
有一个非常有用的扩展称为Flask-Login,它管理用户会话进行身份验证。如果您决定实现自己的用户会话,这可能会为您节省一些时间。
祝你好运。