gpt4 book ai didi

windows - Web 应用程序 Kerberos 身份验证 : Is the proper way to combine with cookies?

转载 作者:可可西里 更新时间:2023-11-01 13:14:05 26 4
gpt4 key购买 nike

场景:

  • 企业级、防火墙后的 Python 网络应用程序。
  • 应该使用 Kerberos 对用户进行身份验证。
  • 我有工作代码可以从服务器发送正确的响应(Negotiate header 等)并使用 kerberos-sspi 获取访问应用程序的用户的 Windows 用户名

我对 Kerberos 没有多少经验,但对 Web 应用程序有一些经验。

在我创建的其他使用内置用户数据库的 Python 网络应用程序中,身份验证流程通常如下所示:

  • 对于每个请求,检查请求是否有包含用户 ID 的(签名的)cookie(或一些变体 - 例如使用 flask-login,其中用户 id 存储在 flask.session 中)
  • 如果cookie存在,则正常响应。
  • 如果不存在这样的 cookie,重定向到 /login/ 显示用户名/密码形式。 POST/login/ 验证正确的用户名/密码,设置安全 cookie 并重定向到 ?next= 查询参数中指定的 URL。

我的问题是:

  • 在 Kerberos 身份验证的网络应用程序中,身份验证流程是否相似?
  • 即我应该做以下事情吗:

    • 对于每个请求,检查请求是否有包含用户 ID 的(签名的)cookie
    • 如果cookie存在,则正常响应。
    • 如果不存在这样的 cookie,则重定向到 /login//login/ 做必要的事情来确定用户是谁(即发送 Negotiate header ,使用 kerberos_sspi 查找用户名等.),然后设置安全 cookie 并重定向到 ?next= 查询参数中指定的 URL。
  • 还是应该以其他方式处理?

最佳答案

是的,您建议的流程似乎可行。

您可以将 Kerberos 协商作为登陆 /login/ 的第一件事,如果 Kerberos 同意,则将用户重定向回 session 。这甚至可以是后台的 XMLHttpRequest 并在 session 不再有效时重定向到 /login/。如果在后台检查 session ,cookie 的生命周期可能比 Kerberos token 短得多,并且您在任何给定时间都无需担心有效 session 。

如果 session 不存在,则为用户提供 Kerberos 和其他可能的登录方法。

如果用户通过 Kerberos 进行了有效 session ,但没有用户配置文件,则将用户配置到应用程序中。在这里,您可以现场轮询用户以获取更多信息,根据组和角色做出决定,或者将用户创建为具有一组默认权限、已知缺失值的 stub ,从而推迟该过程。

这一切都非常笼统。您可能应该回顾一下您正在尝试将您的目标映射到 3A 或 AAA如身份验证、授权和计费。很明显,Kerberos 正在执行身份验证,其余角色需要确定。

关于 cookie:在您的应用程序中将任何身份验证转换为 cookie 确实有意义。这样您以后就可以在不更改整个应用程序的情况下添加一些其他的 SSO 方法。

关于windows - Web 应用程序 Kerberos 身份验证 : Is the proper way to combine with cookies?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54653735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com