2011-02-11 181 views
0

我需要包含一些安全(BASIC认证)应用程序。强制浏览器发送一些HTTP请求标头

当我打开浏览器应用程序URL,浏览器要求我输入凭据......

我知道那是什么:

  1. 浏览器向服务器获取 某些网址 - 应用的网址
  2. 服务器检查请求标头 ,因为Authentication header和 未找到它
  3. 服务器发送401到 浏览器后退
  4. 浏览器解释这个响应 代码到一个消息对话框, 节目给我要我进入 用户名/密码在Authentication发送回 服务器 请求头

到目前为止...好,我可以写一些页面(JSP中),这需要的HTTP请求头发送到正在调用该页面的请求.. 所以我会通过我的页面调用这个应用程序..

这里的问题是,这个应用程序(实际上是一个GWT应用程序)包含一些JavaScript和CSS文件的引用来自托管此应用程序的服务器。我导入的应用程序页面的样子:

<html> 
    <link href="http://application_host/cssfile.css" /> 
    <link href="http://application_host/javascriptfile.js" /> 
    ..... 
</html> 

所以,我再次找到了应用程序要求我的CSS和JS文件认证crenditals!

我想到很多的解决方案,但不知道每个

  • 一个解决方案的适用性是要求浏览器 (通过Javascript)将请求发送 头(Authentication),当他 问为js和css服务器 文件

请给我你的意见...以及任何其他建议将非常欢迎。

谢谢。

回答

0

从你的故事判断,有些东西告诉我你的问题在于它的认证方法。不是如何实施它。你为什么要这么烦请求标题?

据我所知,您可以配置您的容器(即Tomcat)强制某些URL的http身份验证。您的容器将确保已进行身份验证。无需自己设置http标题。

也许你可以更好地解释你想要达到的目标,而不是告诉实施细节?

+0

好吧,虽然你猜,我是应用程序开发人员,但我不是把安全角色放在这个人身上的人。它是应用程序部署者,他将身份验证放在所有应用程序URL(/ *)上。 – 2011-02-11 21:01:34

1

我想你已经陷入了一些怪异的情况,那就是你的服务器配置如何。身份验证发生在身份验证领域的环境中。您的资产应该与您的页面处于相同的身份验证领域,或者(更可能)不应该要求身份验证。浏览器应该缓存给定领域的凭证,而不是再次提示。

查看http://en.wikipedia.org/wiki/Basic_access_authentication

0

协议例子,为什么CSS & js文件都保存在服务器的保护区?您需要将文件放入服务器的公共区域。如果你没有公共区域,那么你需要为它提供帮助。如何做到这一点取决于服务器端软件架构&的配置。