为某些请求添加基本授权标头

时间:2014-10-31 22:49:43

标签: java javascript ajax spring spring-security

我想在基于Spring的网络应用程序中显示来自摄像头的实时mjpeg流,而摄像头需要基本身份验证。

由于Chrome不再支持在网址中进行身份验证(请参阅https://code.google.com/p/chromium/issues/detail?id=123150#c3),并且我在全屏/主屏模式下使用主要在Android平板电脑上安装Chrome的网络应用,我遇到了麻烦。

带有嵌入式身份验证的图像标记,可以在Firefox中使用,如下所示:

<img src="http://username:password@the.camera.local/video.mjpeg" />

有没有办法让Spring拦截某些网址的GET请求并添加Authorization标题?

修改1

另一方面,如果我可以设法加载带有jQuery ajax请求的图片网址,我可以添加用户名和密码参数。

欢迎任何关于如何做到这一点的暗示。

修改2

事实上,我最初的问题是有缺陷的。浏览器直接对摄像机URL进行图像请求,因此Spring Security无法对其进行修改。

可能唯一的解决方案是通过Ajax加载图像。

2 个答案:

答案 0 :(得分:0)

我认为使用弹簧安全性可以解决您的目的。

对于Ex: - 你可以在spring-security.xml文件中提到你想要实现它的url。

<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
      http://www.springframework.org/schema/security
      http://www.springframework.org/schema/security/spring-security-3.1.xsd">

     <http>
        <intercept-url pattern="/video/*" access="ROLE_USER" />             
        <!-- Basic authentication -->
        <http-basic/>
    </http>     
    <authentication-manager>
        <authentication-provider>
            <user-service>
                <user name="test" password="test_pass" authorities="ROLE_USER" />
            </user-service>
        </authentication-provider>
    </authentication-manager>    
</beans:beans>

为spring security配置 web.xml ,并在 pom.xml 中添加依赖项。

现在,当您尝试访问资源/视频/时,对于每次成功的身份验证,都会添加授权标头。

答案 1 :(得分:0)

如何为某些请求添加基本身份验证?如果我使用spring security,则会为所有请求添加标头。