- 浏览: 228508 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
yjz毕竟是云:
总结的不错!
字符流与字节流的区别 -
yiqing:
不错 有帮助
HTTP Basic Authentication认证 -
assertme:
a8350020 写道第一种方法的线程池其实是没有意义的Fut ...
线程返回值的方式介绍 -
a8350020:
第一种方法的线程池其实是没有意义的Future.get()会阻 ...
线程返回值的方式介绍 -
endual:
一个上午都无法配置好的我的eclipse使用svn 哎。。。
总结一下SVN的用法
什么是HTTP Basic Authentication?直接看http://en.wikipedia.org/wiki/Basic_authentication_scheme吧。 在你访问一个需要HTTP Basic Authentication的URL的时候,如果你没有提供用户名和密码,服务器就会返回401,如果你直接在浏览器中打开,浏览器会提示你输入用户名和密码(google浏览器不会,bug?)。你可以尝试点击这个url看看效果:http://api.minicloud.com.cn/statuses/friends_timeline.xml 要在发送请求的时候添加HTTP Basic Authentication认证信息到请求中,有两种方法: 一是在请求头中添加Authorization: Authorization: "Basic 用户名和密码的base64加密字符串" 二是在url中添加用户名和密码: http://userName:password@api.minicloud.com.cn/statuses/friends_timeline.xml //需要Base64见:http://www.webtoolkit.info/javascript-base64.html function make_base_auth(user, password) { var tok = user + ':' + pass; var hash = Base64.encode(tok); return "Basic " + hash; } var auth = make_basic_auth('QLeelulu','mypassword'); var url = 'http://example.com'; // 原始JavaScript xml = new XMLHttpRequest(); xml.setRequestHeader('Authorization', auth); xml.open('GET',url) // ExtJS Ext.Ajax.request({ url : url, method : 'GET', headers : { Authorization : auth } }); // jQuery $.ajax({ url : url, method : 'GET', beforeSend : function(req) { req.setRequestHeader('Authorization', auth); } });
下面摘录一段 Jsp实现鉴权的代码逻辑
以下是一段Jsp鉴权操作 1、server发送一个要求认证代码401和一个头信息WWW-authenticate,激发browser弹出一个认证窗口 2、server取得browser送来的认证头"Authorization",它是加密的了,要用Base64方法解密,取得明文的用户名和密码 3、检查用户名和密码,根据结果传送不同的页面
=========Jsp代码===================
<jsp:useBean id="base64" scope="page" class="Base64"/> <% if(request.getHeader("Authorization")==null){ response.setStatus(401); response.setHeader("WWW-authenticate", "Basic realm="unixboy.com""); }else{ String encoded=(request.getHeader("Authorization")); String tmp=encoded.substring(6); String up=Base64.decode(tmp); String user=""; String password=""; if(up!=null){ user=up.substring(0,up.indexOf(":")); password=up.substring(up.indexOf(":")+1); } if(user.equals("unixboy")&&password.equals("123456")){ //认证成功 }else{ //认证失败 } } %> =======Java段代码================== //消息加解密class public class Base64 { /** decode a Base 64 encoded String. * <p><h4>String to byte conversion</h4> * This method uses a naive String to byte interpretation, it simply gets each * char of the String and calls it a byte.</p> * <p>Since we should be dealing with Base64 encoded Strings that is a reasonable * assumption.</p> * <p><h4>End of data</h4> * We don′t try to stop the converion when we find the "=" end of data padding char. * We simply add zero bytes to the unencode buffer.</p> */ public static String decode(String encoded) { StringBuffer sb=new StringBuffer(); int maxturns; //work out how long to loop for. if(encoded.length()%3==0) maxturns=encoded.length(); else maxturns=encoded.length()+(3-(encoded.length()%3)); //tells us whether to include the char in the unencode boolean skip; //the unencode buffer byte[] unenc=new byte[4]; byte b; for(int i=0,j=0; i<maxturns; i++) { skip=false; //get the byte to convert or 0 if(i<encoded.length()) b=(byte)encoded.charAt(i); else b=0; //test and convert first capital letters, lowercase, digits then ′+′ and ′/′ if(b>=65 && b<91) unenc[j]=(byte)(b-65); else if(b>=97 && b<123) unenc[j]=(byte)(b-71); else if(b>=48 && b<58) unenc[j]=(byte)(b+4); else if(b==′+′) unenc[j]=62; else if(b==′/′) unenc[j]=63; //if we find "=" then data has finished, we′re not really dealing with this now else if(b==′=′) unenc[j]=0; else { char c=(char)b; if(c==′ ′ || c==′ ′ || c==′ ′ || c==′ ′) skip=true; else //could throw an exception here? it′s input we don′t understand. ; } //once the array has boiled convert the bytes back into chars if(!skip && ++j==4) { //shift the 6 bit bytes into a single 4 octet word int res=(unenc[0] << 18)+(unenc[1] << 12)+(unenc[2] << 6)+unenc[3]; byte c; int k=16; //shift each octet down to read it as char and add to StringBuffer while(k>=0) { c=(byte)(res >> k); if ( c > 0 ) sb.append((char)c); k-=8; } //reset j and the unencode buffer j=0; unenc[0]=0;unenc[1]=0;unenc[2]=0;unenc[3]=0; } } return sb.toString(); } /** encode plaintext data to a base 64 string * @param plain the text to convert. If plain is longer than 76 characters this method * returns null (see RFC2045). * @return the encoded text (or null if string was longer than 76 chars). */ public static String encode(String plain) { if(plain.length()>76) return null; int maxturns; StringBuffer sb=new StringBuffer(); //the encode buffer byte[] enc=new byte[3]; boolean end=false; for(int i=0,j=0; !end; i++) { char _ch=plain.charAt(i); if(i==plain.length()-1) end=true; enc[j++]=(byte)plain.charAt(i); if(j==3 || end) { int res; //this is a bit inefficient at the end point //worth it for the small decrease in code size? res=(enc[0] << 16)+(enc[1] << 8)+enc[2]; int b; int lowestbit=18-(j*6); for(int toshift=18; toshift>=lowestbit; toshift-=6) { b=res >>> toshift; b&=63; if(b>=0 && b<26) sb.append((char)(b+65)); if(b>=26 && b<52) sb.append((char)(b+71)); if(b>=52 && b<62) sb.append((char)(b-4)); if(b==62) sb.append(′+′); if(b==63) sb.append(′/′); if(sb.length()%76==0) sb.append(′ ′); } //now set the end chars to be pad character if there //was less than integral input (ie: less than 24 bits) if(end) { if(j==1) sb.append("=="); if(j==2) sb.append(′=′); } enc[0]=0; enc[1]=0; enc[2]=0; j=0; } } return sb.toString(); } }
发表评论
-
转载 HashMap实现分析
2011-08-29 00:30 851** *@author annegu *@da ... -
Index Full Scan vs Index Fast Full Scan
2011-08-25 15:24 936Index Full Scan vs Index Fas ... -
oracle语句优化
2011-08-25 13:52 945Dear All 系统里有下面的语句,其中MDN是 ... -
转 读写分离
2011-08-23 23:51 1257随着一个网站的业务 ... -
拦截器与过滤器
2011-08-21 22:36 1020很多人都了解过滤器也听说过拦截器,但是要是区分它们的不同 ... -
sql写法的注意事项
2011-08-20 23:20 954基本的Sql编写注意事 ... -
字符流与字节流的区别
2011-08-20 22:50 12561 推荐 流是一个有序的字节序列,可作为一个输 ... -
SOCKET 与 HTTP
2011-08-20 22:32 11184.1 SOCKET与TCP/IP 关系 Sock ... -
tomcat中的几点配置说明
2011-08-19 22:20 9571. 如何加大tomcat连接数 在tomcat配置文 ... -
关于struts1和struts2及webork的单例和多实例
2011-08-18 23:31 850老是看到不会的问题就像转过来,记录下来,以后好看,一定 ... -
线程池的原理和连接池的原理
2011-08-18 23:18 812线程池的原理: ... -
非常好的Spring源码分析链接
2011-08-18 23:06 844http://www.ibm.com/developerwor ... -
oralce sql监控
2011-06-23 16:48 957emctl start dbconsole访问地址为:http ... -
Linux系统 学习
2011-05-31 15:33 873%mem 内存使用率 virt ... -
如何重新配置Oracle的EM Database Control
2011-05-30 17:59 892如何重新配置Oracle的 ... -
流控 demo
2011-05-05 23:05 836http://www.iteye.com/topic/19 ... -
基础VI命令学习
2011-04-21 14:13 798i编辑器是所有Unix及Linux系统下标准的编辑器,它 ... -
hibernate session统一管理的配置
2011-03-31 10:24 1082public class FlushedOpenSess ... -
查看连接池的配置
2011-03-30 16:51 1058<servlet> <serv ... -
保留一些 电信方面知识的链接
2011-03-21 14:46 831保留一些 电信方面知识的链接 写道 http://ww ...
相关推荐
HTTP基本认证(Basic Authentication)是HTTP协议中一种简单的身份验证机制。它要求用户在访问受保护资源时提供用户名和密码。这种认证方式是基于HTTP头部的,通过将用户名和密码编码为Base64字符串并将其放入`...
HTTP Basic Authentication 是一种简单的身份验证机制,它要求客户端在每个请求中都包含一个认证头(Authorization)。在 Basic Auth 中,用户名和密码被组合成一个字符串(例如 "admin:admin"),然后使用 Base64 ...
java实现HTTP 基本认证 (Basic Authentication) 大家在登录网站的时候,大部分时候是通过一个表单提交登录信息。 但是有时候浏览器会弹出一个登录验证的对话框,如下图,这就是使用 HTTP 基本认证。 下面来看看一...
本文将深入探讨CXF安全访问的一个重要方面:HTTP基本认证(Http Basic Auth)。这是一种简单但有效的身份验证机制,适用于对Web服务进行安全控制。 HTTP基本认证是基于HTTP协议的,它在请求头中包含一个Base64编码...
3. **指定认证方式**:在`<login-config>`元素中设置`<auth-method>`为`BASIC`,并定义`<realm-name>`来标识验证区域。 4. **定义角色**:通过`<security-role>`元素定义角色名称,例如`bank_member`。 5. **完整...
**标题:“Nginx系列(十五):在Nginx下启用HTTP Basic Authentication”** **内容概述:** 本文将深入探讨如何在Nginx服务器上启用HTTP Basic Authentication,这是一种广泛使用的身份验证方法,用于保护网站...
**标题解析:** "BasicAuth的Java服务端实现" 指的是使用Java语言在服务端实现HTTP的基本认证(Basic Authentication)机制。这种认证方式是HTTP协议标准的一部分,用于在网络服务器上验证用户身份。 **基本认证...
【C#进阶系列:WebApi身份认证解决方案推荐——Basic基础认证】 在Web开发中,尤其是在涉及API服务时,确保接口的安全性至关重要。C#的WebApi提供了多种身份验证方式,其中Basic认证是一种简单但实用的策略。本文将...
在本Demo中,我们将深入探讨如何使用Acegi实现Basic认证,这是一种常见的HTTP身份验证方法,适用于简单的应用场景。 Basic认证是一种客户端-服务器认证方式,用户凭据(用户名和密码)以Base64编码的形式包含在请求...
HTTP基本认证(BASIC Authentication)是一种简单的身份验证机制,常用于Web服务器对客户端进行身份验证。本文将深入探讨BASIC认证的原理以及如何在实际环境中实现这一机制。 一、BASIC认证概述 BASIC认证是HTTP...
然后进入新浪微博开放平台查看相关文档,在文档中(使用Basic Auth进行用户验证)发现新浪微博开发团队推荐了园子里的Q.Lee.lulu写的一篇博文:访问需要HTTP Basic Authentication认证的资源的各种语言的实现。...
在Java编程中,有时我们需要向HTTP服务器发送带有特定身份验证的POST请求,例如使用Basic Authentication。在这种情况下,我们可以使用Apache HttpClient库来实现。下面将详细解释如何使用Java发送带Basic Auth认证...
Ring-Basic-Authentication是针对Clojure Web开发框架Ring的一个中间件,它允许开发者在Web应用程序中实现基本的HTTP身份验证机制。这个中间件是基于HTTP协议的“Basic Authentication”规范,该规范要求用户在访问...
1. **Basic认证**:这是一种简单的HTTP认证方式,用户凭据(用户名和密码)通过Base64编码的HTTP头发送到服务器。这种方式不安全,因为凭据在网络中明文传输,但适用于测试环境或内部网络。 2. **Form认证**:Form...
采用VC编程,源碼VS2010编译...针对使用Basic Authentication认证的管理后台登录方式做暴力破解 程序有小BUG,但是猜解没有问题 相关开发进度请参阅CSDN BLOG http://blog.csdn.net/yehjordan/article/details/18892355
基本的HTTP身份验证(Basic Authentication)是一种常见的身份验证机制,它通过在HTTP头中传递用户名和密码来实现。下面我们将深入探讨ASP.NET Core 3.1中的基本HTTP身份验证API及其使用方法。 首先,让我们了解...
首先,让我们了解HTTP基本认证(http_authentication)。HTTP基本认证是一种简单的身份验证机制,它通过HTTP头信息进行用户凭据的传递。在Rails中,你可以通过集成ActionController::HttpAuthentication模块来实现这...
本文将深入探讨如何在Postman中实现基本身份验证(Basic Authentication),并利用JavaScript脚本来简化这一过程。 基本身份验证是一种简单的身份验证机制,它通过在HTTP请求头中添加一个Authorization字段,该字段...
在Web服务中,通常采用HTTP基本认证、Digest认证或WS-Security(Web Services Security)标准进行用户身份验证。在Axis2中,我们可以利用这些机制来保护服务免受未经授权的访问。 1. **HTTP基本认证**:这是一种...