第 14 章 basic认证
basic
认证是另一个常用的认证方式,与表单认证不同的是,basic认证常用于无状态客户端的验证,比如HttpInvoker或者Web
Service的认证,这种场景的特点是客户端每次访问应用时,都在请求头部携带认证信息,一般就是用户名和密码,因为basic认证会传递明文,所以最
好使用https传输数据。
如果在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认证方式来实现用户登录。
现在我们访问系统时,不会再进入之前的登录页面,而是会显示浏览器原生的登录对话框。
登录成功之后,我们可以在HTTP请求头部看到basic验证所需的属性
Authorization。
最后需要注意的是,因为basic认证不使用session,所以无法与rememberMe功用。
下面我们来示范一下如何使用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");
URL url = new URL("http://localhost:8080/ch104/admin.jsp");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Authorization", authorization);
|
我们先将用
户名和密码拼接成一个字符串,两者之间使用“:”分隔。
然后使用commons-codec的Base64将这个字符串加密。在进行
basic认证的时候Spring Security会使用commons-codec把这段字符串反转成用户名和密码,再进行认证操作。
下
一步为加密后得到的字符串添加一个前缀"Basic ",这样Spring Security就可以通过这个判断客户端是否使用了basic认证。
|
|
将上面生成
的字符串设置到请求头部,名称为“Authorization”。Spring Security会在认证时,获取头部信息进行判断。
|
有
关basic代码可以在/ch104/basic.jsp找到,可以运行ch104,然后访问http://localhost:8080/ch104
/basic.jsp。它会使用上述的代码,通过Spring Security的认证,成功访问到admin.jsp的信息。
实
例在ch104。
分享到:
相关推荐
最后,为了使Basic认证工作,你需要在客户端(通常是浏览器)发送请求时附带正确的Authorization头。例如,当用户尝试访问受保护的资源时,如果没有提供有效的凭据,服务器会返回一个401未授权响应,此时浏览器会弹...
要使用基本认证访问API,客户端需要在每个请求中添加`Authorization`头部,其值的格式为`Basic base64-encoded(username:password)`。首先,将用户名和密码连接成`username:password`字符串,然后对这个字符串进行...
【基本认证】,全称为Business Social Compliance Initiative(BSCI),是一项由欧洲零售商、进口商和生产公司组成的组织,旨在推动全球供应链中企业社会责任的改善。这个认证尤其关注在制造业,尤其是对外贸易中的...
本篇将深入探讨如何利用Acegi Security实现基于数据库的用户信息认证,以及Http Basic认证。 Http Basic认证是一种常见的身份验证机制,广泛应用于Web服务。该机制遵循HTTP协议标准,通过Base64编码用户凭证...
在Acegi Security的配置文件中,需要指定使用Basic认证方式,并关联自定义的`AuthenticationProvider`和`UserDetailsService`。此外,还需要配置哪些URL需要进行认证,以及未通过认证时的行为。 6. 安全拦截器: ...
**Web应用安全:体验Basic认证** Basic认证是HTTP协议中一种基本的身份验证机制,它用于保护Web资源,确保只有授权的用户能够访问特定的网页或服务。这种认证方式的运作原理简单,但也存在一些明显的安全问题。 ##...
在这个"Restlet开发的Basic认证"示例中,我们将探讨如何在Restlet应用中实现HTTP基本认证,这是一种广泛使用的身份验证机制。 HTTP基本认证是基于HTTP协议的,它要求客户端(通常是浏览器或API调用者)在访问受保护...
本文将深入探讨BASIC认证的原理以及如何在实际环境中实现这一机制。 一、BASIC认证概述 BASIC认证是HTTP协议中的一种身份验证方法,它允许服务器在接收到未授权的请求时,要求客户端提供用户名和密码。当客户端...
在本文中,我们将深入探讨如何在Windows Phone 7(WP7)平台上,使用HTTP Basic认证与gSOAP编写的Web服务进行交互。gSOAP是一个开源工具,用于生成C和C++的客户端和服务端代码,以便与Web服务进行SOAP通信。Windows ...
通过本文介绍的方法,可以在Spring Boot项目中为Swagger界面添加Basic认证,从而提升API的安全性。虽然这里主要介绍了如何使用Swagger Bootstrap UI来实现这一目标,但在实际项目中,还可以考虑其他方法和技术栈来...
第三节 暴力破解 - HTTP Basic认证-01
HTTP Basic Authentication 是一种简单的身份验证机制,它要求客户端在每个请求中都包含一个认证头(Authorization)。在 Basic Auth 中,用户名和密码被组合成一个字符串(例如 "admin:admin"),然后使用 Base64 ...
第四节 暴力破解 - HTTP Basic认证字典生成(Python)-01
通过base64加密方式将用户名和密码进行封装,生成basic auth的认证信息,再将该信息塞进请求头里,最后通过认证进行get请求。
3. **指定认证方式**:在`<login-config>`元素中设置`<auth-method>`为`BASIC`,并定义`<realm-name>`来标识验证区域。 4. **定义角色**:通过`<security-role>`元素定义角色名称,例如`bank_member`。 5. **完整...
在基本认证中,这个头值通常是"Basic"。 CXF框架允许开发者方便地在服务端和客户端启用HTTP基本认证。在服务端,可以通过在CXF的配置文件中设置来启用此功能。例如,在Spring配置中,你可以添加以下代码: ```xml ...
**标题解析:** "BasicAuth的Java服务端实现" 指的是使用Java语言在服务端实现HTTP的基本认证(Basic Authentication)机制。这种认证方式是HTTP协议标准的一部分,用于在网络服务器上验证用户身份。 **基本认证...
根据提供的信息,我们可以了解到这份资料是关于SAS Base认证考试的练习题目,主要涉及的是SAS Base Programming for SAS 9这一部分。SAS(Statistical Analysis System)是一种广泛应用于数据分析、商业智能领域的...
C#的WebApi提供了多种身份验证方式,其中Basic认证是一种简单但实用的策略。本文将详细介绍Basic认证的原理及实现方法。 一、为什么需要身份认证 WebApi服务若无身份认证,任何知道接口URL的人都能通过HTTP请求...
我们将会看到两种认证方式:Basic认证和Form认证,并结合配置文件进行实例讲解。 首先,让我们理解这两种认证模式: 1. **Basic认证**:这是一种简单的HTTP认证方式,用户凭据(用户名和密码)通过Base64编码的...