2

我是网络开发的初学者。我已经完成了相当多的命令行和一些 gui python 开发,并使用 Drupal 和 Wordpress 以及静态 html/css 完成了 Web 开发,但从来不必担心管理会话或登录用户。在少数需要这样做的情况下,我只使用了 Drupal/Wordpress。

我致力于学习 Flask/Web 开发,并且已经开始了一个项目。这是一个简单的 3 页应用程序,它调用另一个站点的 XML API(我相信它被称为 REST API)。我将调用的站点是 Adob​​e 的 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 应用程序。

非常感谢任何建议/提示。

4

1 回答 1

1

仅当您使用安全 HTTP(即https://...)时,在 URL 中发送登录凭据才是安全的。您链接的 Adob​​e Connect 文档在注释中提到了这一点,但它们显示的许多示例都使用 plain http://...。非常误导。

登录后,您会收到一个会话,您必须在将来的请求中发送该会话来代替凭据。使用会话 ID 的风险较低,但无论如何,通过安全 HTTP 发送所有请求来保护会话 ID 也是一个好主意。

然后你有第二个问题要解决。用户凭据需要先从用户的计算机传输到您自己的服务器,然后才能将其发送到 Adob​​e Connect。您的服务器也应该在安全的 HTTP 上。

最后,与 Adob​​e Connect 使用您在所有请求中传递的会话 ID“记住”您的方式相同,您需要为每个用户创建一个会话,以便每次他们请求页面时,您都会记住他们并了解 Adob​​e用于您需要发送的请求的会话。

对于您自己的会话 ID,您可以重复使用 Adob​​e Connection 会话 ID,只需将其以 cookie 的形式发送给您的用户,然后您将在他们每次请求页面时将其取回。更强大的解决方案要求您生成自己的不同于 Adob​​e 的会话 ID,并将您的会话与用户数据库表中的 Adob​​e 会话相关联。

有一个非常有用的扩展名为 Flask-Login,它可以管理用户会话以进行身份​​验证。如果您决定实现自己的用户会话,它可能会为您节省一些时间。

祝你好运。

于 2013-11-13T19:03:14.447 回答