`
dylan0514sina.cn
  • 浏览: 94928 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

安全认证

    博客分类:
  • any
 
阅读更多
在使用HTTP Basic 认证期间,开发者并不能够自定义收集用户凭证的对话框。基于HTTP的表单(FORM)认证也是JAVA EE 容器厂商必须支持的一种认证机制之一。这一认证机制采用普通的Web页面收集用户凭证信息,因此它在用户友好性方面广受亲睐。为此,IMS系统采用基于Spring Security的表单认证。
AuthenticationProcessingFilter和AuthenticationProcessingFilterEntryPoint是用于表单认证的过滤器和辅助类。其中,处于过滤链中的AuthenticationProcessingFilter用于拦截Web请求, 并从HttpServletRequest请求中抽取出用户名、密码等用户凭证信息。与此同时,AuthenticationProcessingFilterEntryPoint用于实施表单认证。
接下来,我们通过对Spring Security扩展和配置以支持表单认证。
n 首先,在web.xml描述符中配置如下信息,该过滤器从Spring容器中查找名为“springSecurityFilterChain”的Filter。该过滤器内部构造了VirtualFilterChain以支持多个Spring Security 提供的安全Filter,这样就无须在Web.xml中配置每个Filter。
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name> springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
n 其次,在Spring配置文件中配置与1对应的Filter,该过滤器是IMS系统安全配置中心。其中,auto-config=”true”相当于是表单认证,匿名认证,Basic认证,注销服务,Remember认证集合。其中sec:form-login是对表单认证的重写,sec:logout是对注销服务的重写。针对配置做如下详细描述
entry-point-ref="authenticationProcessingFilterEntryPoint",一般执行FilterSecurityInterceptor时,认证失败或者匿名用户授权失败后的重定向。其中loginFromUrl指定授权失败后的页面地址;forceHttps指定当serverSideRedirect=true时,将Http请求转化为HTTPS;serverSideRedirect指定是否服务器端转发。
<bean id="authenticationProcessingFilterEntryPoint"class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
<property name="loginFormUrl" value="/login.jsp" />
<property name="forceHttps" value="false" />
<property name="serverSideRedirect" value="true" />
</bean>
lowercase-comparisons指定是否将请求URL转成小写与Pattern匹配
access-denied-page指定非匿名用户授权失败后的地址
sec:intercept-url指定模式与权限对应关系,而且sec:intercept-url有顺序关系,当sec:intercept-url匹配成功后,会短路不再执行之后的sec:intercept-url,所以,一般特定的URL放在最前面,如果配置多个sec:intercept-url,千万不要把pattern=”/**”放在最前面,否则后面的配置没意义
pattern URL匹配路径
  path-type="ant"匹配模式,有Ant 和Regex,默认为Ant
form-login为表单认证配置,其中always-use-default-target="true"指定HttpSession中SPRING_SECURITY_SAVED_REQUEST_KEY的请求不存在时,重定向到”/”。/login.jsp指定实施表单认证的登录页面,login-processing-url="/j_spring_security_check"指定当请求为/j_spring_security_check时,才实施表单认证。当认证失败后,跳转到authentication-failure-url指定页
logout为注销配置,其中logout-success-url指定注销后的跳转页(注销不会失败),logout-url指定当请求为"/j_spring_security_logout”才实施注销服务。而invalidate-session指定注销时使session中的信息无效
<sec:http auto-config="true"
entry-point-ref="authenticationProcessingFilterEntryPoint" path-type="ant"
lowercase-comparisons="false" access-denied-page="/accessDenied.jsp">
<sec:intercept-url pattern="/login.jsp*" filters="none" />
<sec:intercept-url pattern="/captchaImage*" filters="none" />
<sec:intercept-url pattern="/**" access="ROLE_USER" />
<sec:form-login always-use-default-target="true"
login-page="/login.jsp" login-processing-url="/j_spring_security_check"
authentication-failure-url="/login.jsp?login_error=1" />
<sec:logout logout-success-url="/login.jsp" logout-url="/j_spring_security_logout"
invalidate-session="true" />
</sec:http>
n 下面对IMS系统登录界面的安全相关设置。需要输出验证失败相关信息,param.login_error指定表单认证中的authentication-failure-url属性,当认证失败时,输出SPRING_SECURITY_LAST_EXCEPTION.message信息,SPRING_SECURITY_LAST_EXCEPTION指定表示认证失败信息的异常信息。
<c:if test="${not empty param.login_error}">
      <font color="red">
        Your login attempt was not successful, try again.<br/><br/>
        Reason: <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}"/>.
      </font>
    </c:if>
n 再看form表单设置 。action必须为/'j_spring_security_check,这样才能实施表单认证,j_username和j_password是表单认证中默认的字段名,表单过滤器会从请求中抽取;我们还使用了Remember认证,注意checkbox名称必须为_spring_security_remember_me,我们还集成了验证码,输入框的名字为j_captcha_response,图片请求必须为captchaImage.htm。至此,IMS基于Spring Security设置结束
<form name="f" action="<c:url value='j_spring_security_check'/>" method="POST">
      <table>
        <tr><td>User:</td><td><input type='text' name='j_username' value='<c:if test="${not empty param.login_error}"><c:out value="${SPRING_SECURITY_LAST_USERNAME}"/></c:if>'/></td></tr>
        <tr><td>Password:</td><td><input type='password' name='j_password'></td></tr>
        <tr><td><input type="checkbox" name="_spring_security_remember_me"></td><td>Don't ask for my password for two weeks</td></tr>
        <tr><td>请将图片中显示的内容填充到输入框中<input name="j_captcha_response"/></td><td><img src="captchaImage.htm" onclick=""/></td></tr>
        <tr><td colspan='2'><input name="submit" type="submit"></td></tr>
        <tr><td colspan='2'><input name="reset" type="reset"></td></tr>
      </table>
    </form>
分享到:
评论

相关推荐

    亚信ACCSS安全认证云安全专家课程PPT与题库

    亚信ACCSS安全认证云安全专家课程是一门深入探讨云安全技术、策略和实践的专业培训课程,旨在培养具有云安全解决方案部署实施和技术支持能力的专业人士。该课程涵盖了云安全的各个方面,包括但不限于基础理论、最佳...

    海康OpenAPI安全认证库(C#)-V1.0.1_20200811140815.rar

    OpenAPI安全认证库屏蔽了OpenAPIHTTP接口签名细节,降低C#对接OpenAPI的复杂度,使用 方只需引入OpenAPI安全认证库(C#)即可方便快速的实现HTTP通信。 提供源代码,已使用Visual Studio 2015以及.Net4.5.2基于Any ...

    海康威视OpenAPI安全认证库(python3)

    海康威视OpenAPI安全认证库是针对Python3开发的一款工具,主要目的是为了方便开发者能够更轻松地与海康威视的设备和服务进行交互。在海康威视官方提供的接口中,原本仅支持C#和Java这两种编程语言,但通过这个Python...

    OpenAPI安全认证库 (Java)开发指南V1.1.4-20211215182354-20220216173329.pdf

    《OpenAPI安全认证库(Java)开发指南》 OpenAPI安全认证库是针对Java开发者设计的一个工具库,它专门用于简化对接OpenAPI HTTP接口的安全认证过程。该库封装了HTTP和HTTPS的POST与GET方法,提供了Java调用OpenAPI...

    格尔安全认证网关产品白皮书.

    ### 格尔安全认证网关产品白皮书关键知识点解析 #### 1. 网络应用面临的挑战 - **背景介绍**:随着信息技术的飞速发展,网络应用变得日益普遍,涵盖了网上证券、网上银行、电子政务等多个领域。这些应用因其高效...

    xfire+spring+安全认证

    在IT行业中,安全认证是构建任何网络应用的关键环节,特别是在涉及到服务器与客户端交互时。"xfire+spring+安全认证"的主题聚焦于如何利用XFire和Spring框架来实现安全的Web服务。XFire是一个用于创建、消费和部署...

    银行卡安全认证实施细则

    银行卡安全认证是一个多层次、全方位的安全体系,旨在确保银行卡在使用过程中的安全性。银联金融IC卡安全认证就是其中的一个重要组成部分。这项认证覆盖了芯片设计、集成电路加工、嵌入式软件研发等环节,对每个环节...

    统一安全认证平台的设计与实现.nh

    统一安全认证平台的设计与实现1、建立一个统一认证平台系统,可以对局域网内主机管理人员和使用人员 主机服务器的行为进行集中身份认证、权限管理和审计。 2、可以应用到多种常用的服务器操作系统,如Windows、Linux...

    通过受理终端安全认证的产品列表

    通过受理终端安全认证的产品列表,我们可以了解到安全认证对于支付终端设备的重要性。认证不仅是产品合规的象征,也是企业信誉和技术实力的体现。随着支付技术的不断进步和安全威胁的日益增加,通过严格的安全认证...

    atiSidRenjen身份证认证与安全认证模块.zip

    在IT行业中,安全认证是确保用户身份合法性及数据安全的关键环节。"atiSidRenjen身份证认证与安全认证模块"是一个专门针对此需求设计的软件组件,它可能包含了用于验证身份证信息以及实施多因素安全认证的技术。 ...

    精通PKI网络安全认证技术与编程实现_PDF书签高清版.7z.005(共5个压缩包)

    内容简介回到顶部↑ pki是解决开放式互联网络信息安全需求的成熟体系...下载中: [精通PKI网络安全认证技术与编程实现].马臣云 & 王彦.配套光盘.rar | 10.8 MB http://hotfile.com/dl/78343749/98d1473/PKI.__..rar.html

    rpc 微服务架构下的安全认证与鉴权1

    在微服务架构中,安全认证和鉴权是至关重要的,因为它们确保了服务之间的通信以及用户访问的正确性和安全性。随着从单体应用向微服务的转变,传统的认证和鉴权机制面临着新的挑战。本文将探讨这些挑战以及相应的解决...

    《精通PkI网络安全认证技术与编程实现》源代码

    《精通PKI网络安全认证技术与编程实现》源代码是一份重要的资源,对于深入理解网络时代的安全机制至关重要。PKI(Public Key Infrastructure,公钥基础设施)是保障网络安全的关键技术,它利用非对称加密原理,为...

    cxf入门例子(安全认证)

    【CXF入门例子(安全认证)】 Apache CXF 是一个开源的 Java 框架,主要用于构建和开发服务导向架构(SOA)和 RESTful Web 服务。它提供了丰富的功能,包括SOAP、REST、WS-* 标准支持、数据绑定、JAX-RS 和 JAX-WS ...

    移动互联网应用程序(App)安全认证实施细则.pdf

    ### 移动互联网应用程序(App)安全认证实施细则关键知识点解析 #### 一、引言与背景 - **目的与意义**:本实施细则旨在规范移动互联网应用程序(简称“App”)的安全认证工作,确保用户个人信息安全,提升App的...

Global site tag (gtag.js) - Google Analytics