A light-weight client-side OAuth library for Java
这个是一个Github上的开源项目-Signpost,主要封装了一些OAuth认证类的方法,项目地址:电极打开
Signpost
什么是Signpost
Signpost是一种非常容易、直观的HTTP信息签名解决方案,符合OAuth核心1.0a标准,当前应用在java平台上,Signpost遵循模块和灵活的设计,使您可以将其与不同的
HTTP消息传递层相结合,单击此处可以查看受支持的HTTP库列表。
Signpost的目标
Signpost设计目标基于以下的一些原则性:
1.简化
Signpost使用起来你会发现它非常的简单,所有动作的执行都仅仅需要几行的代码即可实现。比如,下面就是演示你如何用Signpost给一个标准的java HTTP 信息签名
// create an HTTP request to a protected resource
URL url = new URL("http://api.example.com/protected")
HttpURLConnection request = (HttpURLConnection) url.openConnection(); // sign the request (consumer is a Signpost DefaultOAuthConsumer)
consumer.sign(request); // send the request
request.connect();
Signpost基于两个目标提供了一个简约的API :签名HTTP信息和从一个OAuth service提供者获取请求令牌。Everything else is beyond the scope of the OAuth specification, and is thus left to the HTTP messaging layer, where it belongs.(这个翻译不了)
需要参考更多详细的例子,请参考这里
Unobtrusiveness
Signpost尽可能的不高调(unobtrusive),与其他的项目实现不同,Signpost不包含整个HTTP层并且隐藏它的客户端功能。相反,你仅仅需要传递一个HttpRequest对象给它,然后Signpost将会使用它已经配置的凭据对信息进行签名。
这意味着所有底层HTTP引擎的强大功能和灵活性仍然在你的指尖。
模块化
自从1.1版本以后,Signpost进行了模块化。除了那些你必须的核心模块,你可以现在下载额外的模块来支持其他HTTP签名库而不仅仅是那个跟标准的Java平台的附件模块。
除了HttpURLConnection,当前Signpost也包含Apache Commons HTTP版本4模块和Jetty HTTP Client版本6。
局限
Signpost努力试着成为一个简单的库。为了减少API和实现方式的复杂性,Signpost当前不会支持一下事情:
*当前不支持使用公共密钥加密的信息签名。但是,使用PLAINTEXT和HMAC-SHA1加密方法的信息签名是支持的。
*从WWW-Authenticate的标头字段写入OAuth协议参数
我相信即使有这些限制的地方,Signpost将为广大的用户工作。交易很少用于更简单的功能和易用性是一个设计决定。如果不适合您的设置工作,Signpost很可能不是您的最佳选择。
线程安全性
Signpost是非安全性的线程并且可能永远也不会。Signpost对象是非常轻量级,所以你必须在你的必须要发送的签名的HTTP请求的程序中为每一个线程创建一个OAuthConsumer和OAuthProvider。这两个对象也是可序列化的,因此你可以坚持和以后还原他们。
Google Android
注意:在android实现不要使用DefaultOAuth,因为在安卓系统的java.net.HttpURLConnection有一个bug,它阻止了与一些service provider进行工作。Instead,使用CommonsHttpOAuth类。
Signpost已经用在使用在需要android程序上,以及谷歌的软件协议栈的移动设备。
A light-weight client-side OAuth library for Java的更多相关文章
- 网络爬虫2--PHP/CURL库(client URL Request Library)
PHP/CURL库功能 多种传输协议.CURL(client URL Request Library),含义是“客户端URL请求库”. 不像上一篇所用的PHP内置网络函数,PHP/CURL支持多种 ...
- lwip Light Weight (轻型)IP协议
wip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈. 外文名 lwip 开发者 瑞典计算机科学院 说 明 Light Weight (轻型)I ...
- Virtual servers on a Raspberry Pi with the light weight OS virtualization system Docker!
转自:http://www.hyggeit.dk/2014/02/virtual-servers-on-raspberry-pi-with.html Virtual servers on a Rasp ...
- Eclipse报错 due to restriction on required library C:/Java/jdk1.7.51/jre/lib/rt.jar 解决方案
Eclipse报错 due to restriction on required library C:/Java/jdk1.6.0_10/jre/lib/rt.jar 解决方案 Eclipse 编译时 ...
- spring .cloud ------------java.lang.RuntimeException: com.netflix.client.ClientException,Caused by: java.lang.IllegalArgumentException: MIME type may not contain reserved characters
1.问题的发生 Feign在默认情况下使用的是JDK原生的URLConnection发送HTTP请求,没有连接池,但是对每个地址会保持一个长连接,即利用HTTP的persistence connect ...
- no jpeg in java.library.path;java.lang.NoClassDefFoundError: Could not initialize class sun.awt.image.codec.JPEGImageEncoderImpl
no jpeg in java.library.path;java.lang.NoClassDefFoundError: Could not initialize class sun.awt.imag ...
- com.rabbitmq.client.impl.Frame.readFrom(Frame.java:95)
RabbitMQ 基于Erlang 实现, 客户端可以用Python | Java | Ruby | PHP | C# | Javascript | Go等语言来实现.这里做个java语言的测试.首先 ...
- TCP/UDP client/server library for Java, 最好的java语言tcp udp 服务器客户端实现库
这个库andrdoi也可以用,而且是基于类的使用方式: 它支持类似聊天室的功能,即一个人说话,所有客户端都能收到,当然也支持点点通信.它还支持 RMI 的方式调用远程过程. https://githu ...
- lwIP(Light Weight IP)协议
信号量 信号量结构体:struct sys_semt struct _sys_sem { void *sem; }; err_t sys_sem_new(sys_sem_t *sem, u8_t c ...
随机推荐
- javaScript之事件处理程序
事件就是用户或浏览器自身执行的某个动作,JavaScript与HTML的交互也是通过事件实现的.而相应某个事件的函数就叫做事件处理函数.包括以下几种: 1.HTML事件处理程序 某个元素支持的每 ...
- File 类 操作实例
File 操作 <介绍> 尽管java.io定义的大多数类是实行流式操作的,File类不是.它直接处理文件和文件系统.也就是说,File类没有指定信息怎样从文件读取或向文件存储:它描述了文 ...
- C++知识点总结(二)
1.字符串的部分拷贝 ① 利用标准库函数strncpy(),可以将一字符串的一部分拷贝到另一个字符串中.strncpy()函数有3个参数:第一个参数是目录字符串:第二个参 数是源字符串:第三个参数是一 ...
- Learning Python 008 正则表达式-001
Python 正则表达式 总结 这节课讲讲正真使用的技术 - 正真表达式. 文本爬虫 什么是正则表达式 正则表达式这个名词听起来就有一种很官方的感觉,但是它是一个很很很有用的技术.我用语言是不能形容它 ...
- 在PCL中如何实现点云压缩(1)
点云由庞大的数据集组成,这些数据集通过距离.颜色.法线等附加信息来描述空间三维点.此外,点云能以非常高的速率被创建出来,因此需要占用相当大的存储资源,一旦点云需要存储或者通过速率受限制的通信信道进行传 ...
- try catch 块中debug时发现错误细节的一次记录
在解决已有代码的一个问题时,有一个try catch块,基本代码如下: try { //do something } catch { LogHelper.Debug(typeof(myHelper), ...
- 5. Python大法之告别脚本小子--各类URL采集器编写
在i春秋上面,有很多不错的脚本: https://bbs.ichunqiu.com/forum.php?mod=collection&action=view&ctid=137 http ...
- 1.浅谈XXE漏洞攻击与防御
XML基础 在介绍XXE漏洞前,先学习温顾一下XML的基础知识.XML被设计为传输和存储数据,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具. XML是一种用于标记电子文 ...
- linux下apache2的虚拟主机配置
1,起因 在一星期前吧,大波说既然咱们有了自己的服务器,二级域名了.可以考虑怎样每人一个域名,分别指向我们各自的空间.想法挺好,避免我们个人的东西放在同一主页上.那就做吧 2,第一次尝试 (1)在域名 ...
- HDU 5242 Game (贪心)
题意:给定一棵树,要求从根结点1走k次,每次都是到叶子结点结束,把走过的所有的结点权值加起来,最大是多少. 析:先把每个结点到根结点的路径之和求出来,然后按权值从大到小排序,然后每次把路径中的权值求出 ...