gpt4 book ai didi

java - 单点登录范式是否遵守 HTTP 协议(protocol)规则?

转载 作者:行者123 更新时间:2023-12-01 05:34:10 24 4
gpt4 key购买 nike

我们正在将 CAS 服务器用于 JAVA Web 应用程序。 认证系统如下:

  • 用户尝试访问系统上的资源 (1)
  • 它获得重定向(302 Found)
  • 用户输入用户名密码
  • 服务器使用 cookie 进行应答并重定向到原始页面 (1)

我对这种交互是否尊重 HTTP 协议(protocol)这一事实存在争议。

如果我没有访问资源的权限系统不应该回答 401 Unauthorized 甚至更好的 407 Proxy Authentication Needed 吗?

授权资源不能用完整的 SSL 级授权 key 来代替 Cookie 字符串吗?

添加:使用curl -L -D 转储 header

HTTP/1.1 301 Moved Permanently
Server: nginx/0.8.54
Date: Sat, 10 Dec 2011 02:07:55 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: https://server.com/service/

HTTP/1.1 302 Found
Server: nginx/0.8.54
Date: Sat, 10 Dec 2011 02:07:55 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: no-store, max-age=0, must-revalidate
Expires: Thu, 01-Jan-1970 00:00:00 GMT
Set-Cookie: JSESSIONID=q7rjikj4spvd1fxaowjl9XXX
Location: https://server.com/login/

HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Sat, 10 Dec 2011 02:07:55 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.3.2
Content-Length: 6650

最佳答案

您是对的 - 您示例中的 SSO 系统实际上与 HTTP 协议(protocol)本身处于不同的级别。如果应用程序返回 401,则浏览器本身可能会处理身份验证(例如:提示用户输入用户名/密码,然后使用在 HTTP 授权 header 中编码的 Base-64 发送下一个请求)。在 HTTP 基本身份验证的情况下,用户名和密码将随每个请求一起发送到您的系统。您可以使用 Kerberos 或 NTLM 进行身份验证,在这种情况下,如果用户已经登录到网络,则身份验证可能是透明的。

也就是说,许多 SSO 系统采用将用户重定向到登录 HTML 表单,然后使用 cookie 维护 session 状态的方法。主要好处之一是您可以更好地控制登录界面的外观和感觉。通过具有 session cookie 的 SSO 系统,它可以以自己的(可能是专有的)方式拥有维护状态的所有权。

关于java - 单点登录范式是否遵守 HTTP 协议(protocol)规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453578/

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