`
lovebirdegg
  • 浏览: 175003 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

basic认证

阅读更多

第 14 章 basic认证

basic 认证是另一个常用的认证方式,与表单认证不同的是,basic认证常用于无状态客户端的验证,比如HttpInvoker或者Web Service的认证,这种场景的特点是客户端每次访问应用时,都在请求头部携带认证信息,一般就是用户名和密码,因为basic认证会传递明文,所以最 好使用https传输数据。

14.1. 配置basic验 证

如果在http中配置了auto-config="true"我们就不用再添加任何配置了,默认 配置中已经包含了Basic认证功能。但是这同时也会激活form-login,因此我们将演示仅有basic验证的场景,为此需要去掉配置文件中的 auto-config="true"。

<http auto-config="true"
>
    <http-basic />

    <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
    <intercept-url pattern="/" access="ROLE_USER" />
</http>
        

删除了auto-config="true"之后,还要记得添加http-basic标签,这样我们的系统将仅仅使用 basic认证方式来实现用户登录。

现在我们访问系统时,不会再进入之前的登录页面,而是会显示浏览器原生的登录对话框。

basic登录

图 14.1. basic登录


登录成功之后,我们可以在HTTP请求头部看到basic验证所需的属性 Authorization。

HTTP请求头

图 14.2. HTTP请求头


最后需要注意的是,因为basic认证不使用session,所以无法与rememberMe功用。

14.2. 编程实现basic 客户端

下面我们来示范一下如何使用basic认证。假设我们在basic.jsp中需要远程调用 http://localhost:8080/ch104/admin.jsp的内容。这时为了能够通过Spring Security的权限检测,我们需要在请求的头部加上basic所需的认证信息。

String username = "admin";
String password = "admin";
byte[] token = (username + ":" + password).getBytes("utf-8");
String authorization = "Basic " + new String(Base64.encodeBase64(token), "utf-8");
1


URL url = new URL("http://localhost:8080/ch104/admin.jsp");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Authorization", authorization);
2

1

我们先将用 户名和密码拼接成一个字符串,两者之间使用“:”分隔。

然后使用commons-codec的Base64将这个字符串加密。在进行 basic认证的时候Spring Security会使用commons-codec把这段字符串反转成用户名和密码,再进行认证操作。

下 一步为加密后得到的字符串添加一个前缀"Basic ",这样Spring Security就可以通过这个判断客户端是否使用了basic认证。

2

将上面生成 的字符串设置到请求头部,名称为“Authorization”。Spring Security会在认证时,获取头部信息进行判断。

有 关basic代码可以在/ch104/basic.jsp找到,可以运行ch104,然后访问http://localhost:8080/ch104 /basic.jsp。它会使用上述的代码,通过Spring Security的认证,成功访问到admin.jsp的信息。

实 例在ch104。

分享到:
评论
1 楼 youzi_friend 2011-08-22  
PHP也遇到同样的问题

相关推荐

    acegi basic认证具体demo

    最后,为了使Basic认证工作,你需要在客户端(通常是浏览器)发送请求时附带正确的Authorization头。例如,当用户尝试访问受保护的资源时,如果没有提供有效的凭据,服务器会返回一个401未授权响应,此时浏览器会弹...

    http basic authentication通过post方式访问api示例分享 basic认证示例

    要使用基本认证访问API,客户端需要在每个请求中添加`Authorization`头部,其值的格式为`Basic base64-encoded(username:password)`。首先,将用户名和密码连接成`username:password`字符串,然后对这个字符串进行...

    basic认证.doc

    【基本认证】,全称为Business Social Compliance Initiative(BSCI),是一项由欧洲零售商、进口商和生产公司组成的组织,旨在推动全球供应链中企业社会责任的改善。这个认证尤其关注在制造业,尤其是对外贸易中的...

    aceig构建基于数据库的用户信息认证Http Basic认证(2)

    本篇将深入探讨如何利用Acegi Security实现基于数据库的用户信息认证,以及Http Basic认证。 Http Basic认证是一种常见的身份验证机制,广泛应用于Web服务。该机制遵循HTTP协议标准,通过Base64编码用户凭证...

    aceig构建基于内存的用户信息认证之Http Basic认证(1)

    在Acegi Security的配置文件中,需要指定使用Basic认证方式,并关联自定义的`AuthenticationProvider`和`UserDetailsService`。此外,还需要配置哪些URL需要进行认证,以及未通过认证时的行为。 6. 安全拦截器: ...

    Web应用安全:体验Basic认证.pptx

    **Web应用安全:体验Basic认证** Basic认证是HTTP协议中一种基本的身份验证机制,它用于保护Web资源,确保只有授权的用户能够访问特定的网页或服务。这种认证方式的运作原理简单,但也存在一些明显的安全问题。 ##...

    Restlet开发的Basic认证

    在这个"Restlet开发的Basic认证"示例中,我们将探讨如何在Restlet应用中实现HTTP基本认证,这是一种广泛使用的身份验证机制。 HTTP基本认证是基于HTTP协议的,它要求客户端(通常是浏览器或API调用者)在访问受保护...

    浅谈HTTP使用BASIC认证的原理及实现方法

    本文将深入探讨BASIC认证的原理以及如何在实际环境中实现这一机制。 一、BASIC认证概述 BASIC认证是HTTP协议中的一种身份验证方法,它允许服务器在接收到未授权的请求时,要求客户端提供用户名和密码。当客户端...

    Windows Phone 7使用HTTP Basic认证连接gsoap编写的Web Service(服务端)

    在本文中,我们将深入探讨如何在Windows Phone 7(WP7)平台上,使用HTTP Basic认证与gSOAP编写的Web服务进行交互。gSOAP是一个开源工具,用于生成C和C++的客户端和服务端代码,以便与Web服务进行SOAP通信。Windows ...

    swagger开启身份认证

    通过本文介绍的方法,可以在Spring Boot项目中为Swagger界面添加Basic认证,从而提升API的安全性。虽然这里主要介绍了如何使用Swagger Bootstrap UI来实现这一目标,但在实际项目中,还可以考虑其他方法和技术栈来...

    第三节 暴力破解 - HTTP Basic认证-01

    第三节 暴力破解 - HTTP Basic认证-01

    RestTemplate如何通过HTTP Basic Auth认证.docx

    HTTP Basic Authentication 是一种简单的身份验证机制,它要求客户端在每个请求中都包含一个认证头(Authorization)。在 Basic Auth 中,用户名和密码被组合成一个字符串(例如 "admin:admin"),然后使用 Base64 ...

    第四节 暴力破解 - HTTP Basic认证字典生成(Python)-01

    第四节 暴力破解 - HTTP Basic认证字典生成(Python)-01

    Basic Auth认证get请求的java代码片段

    通过base64加密方式将用户名和密码进行封装,生成basic auth的认证信息,再将该信息塞进请求头里,最后通过认证进行get请求。

    webService添加basic验证

    3. **指定认证方式**:在`&lt;login-config&gt;`元素中设置`&lt;auth-method&gt;`为`BASIC`,并定义`&lt;realm-name&gt;`来标识验证区域。 4. **定义角色**:通过`&lt;security-role&gt;`元素定义角色名称,例如`bank_member`。 5. **完整...

    2.CXF安全访问之Http Basic Auth(一)

    在基本认证中,这个头值通常是"Basic"。 CXF框架允许开发者方便地在服务端和客户端启用HTTP基本认证。在服务端,可以通过在CXF的配置文件中设置来启用此功能。例如,在Spring配置中,你可以添加以下代码: ```xml ...

    BasicAuth的Java服务端实现

    **标题解析:** "BasicAuth的Java服务端实现" 指的是使用Java语言在服务端实现HTTP的基本认证(Basic Authentication)机制。这种认证方式是HTTP协议标准的一部分,用于在网络服务器上验证用户身份。 **基本认证...

    sas basic 认证练习题

    根据提供的信息,我们可以了解到这份资料是关于SAS Base认证考试的练习题目,主要涉及的是SAS Base Programming for SAS 9这一部分。SAS(Statistical Analysis System)是一种广泛应用于数据分析、商业智能领域的...

    C#进阶系列 WebApi身份认证解决方案推荐:Basic基础认证

    C#的WebApi提供了多种身份验证方式,其中Basic认证是一种简单但实用的策略。本文将详细介绍Basic认证的原理及实现方法。 一、为什么需要身份认证 WebApi服务若无身份认证,任何知道接口URL的人都能通过HTTP请求...

    Tomcat Basic Form认证实例!

    我们将会看到两种认证方式:Basic认证和Form认证,并结合配置文件进行实例讲解。 首先,让我们理解这两种认证模式: 1. **Basic认证**:这是一种简单的HTTP认证方式,用户凭据(用户名和密码)通过Base64编码的...

Global site tag (gtag.js) - Google Analytics