我正在使用 NameCallback 和 PasswordCallback 作为用户名和密码。对于用户名和密码,浏览器会弹出弹出窗口,当我输入用户名和密码时,JAAS 会验证我的请求。
在 wireshark 上,我看到 401 未经授权消息(WWW-Authenticate header )出现,当我输入用户名/密码 HTTP 请求时生成凭据(带有授权 header )并转到服务器。
我的要求:我不想弹出来。我在其他服务器上的应用程序有用户名/密码,所以一旦它收到 401 然后根据一些逻辑它会生成带有授权的 HTTP 请求 header /凭据并将其发回。
流:用户->其他服务器->我的Tomcat5.5
在其他服务器上,没有人可以手动输入用户名/密码。应用程序已部署,它只会生成带有凭据的 HTTP 请求并将其发送回 tomcat。
我们可以有任何其他类似这样的回调吗?需要你的帮助。请向我提供反馈以及与方法相关的反馈。
编辑问题:
实际情况如下:
UserA 调用(SIP 协议(protocol))到 XYZ 服务器。部署在 XYZ 服务器上的应用程序创建一个 HTTP REST 请求并将其发送到部署了一个应用程序的 Tomcat 服务器,以便获取一些用户帐户详细信息。一旦 HTTP 请求到来到 tomcat,我必须对其进行身份验证。我正在使用 tomcat 的 JAASRealm 实现。
现在进行身份验证,tomcat 正在做什么,它会在 XYZ 服务器上弹出用户名/密码窗口。在 XYZ 服务器上,由于应用程序已经创建了 HTTP 请求,所以没有人在这里手动输入用户名/密码(就像这样不会转到用户 A 设备)。
我正在寻找一种不会出现此弹出窗口的方法,并且部署在 XYZ 服务器中的应用程序应该执行以下操作:
如果(响应等于 401)则 使用凭据创建 HTTP 请求。
所以我一直在寻找一个不弹出的解决方案。现在清楚了吗,请建议。
最佳答案
您的应用程序应使用 java.net.Authenticator 向 HttpURLConnection 提供凭据,而不是直接处理 401 和 WWW-Authenticate header 。
关于java - JAAS : on Callback ( Interesting based on HTTP headers ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10990611/