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 ...
随机推荐
- 快速实现CentOS7安装python-pip
1.首先检查linux有没有安装python-pip包,终端执行 pip -V [root@ network-scripts]# pip -V -bash: pip: command not foun ...
- java电子书chm全套下载
链接:http://pan.baidu.com/s/1qWmMlYk 密码:us3x 版权声明:本文为博主原创文章,未经博主允许不得转载.
- Javax ws 01
1 EndPoint发布服务 package com.gosaint.provider; import javax.jws.WebService; /** * @Authgor: gosaint * ...
- 《JavaScript语言精粹》第二章-语法 简单笔记
注释 JavaScript提供两种注释: /* */包围的块注释及//开头的行注释. 注释应该被优先用来提高程序的可读性,注释要精确地描述代码,没有用的注释比没有注释更糟糕. /* */块注释对于被注 ...
- 【转】webservice
一.WebService概念 Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它 ...
- 未能写入输出文件 “c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\6ee8fd15\5fc973dd\App_Web_default.aspx.cdcab7d2.e1voeq0d.dll”--“拒绝访问
在本地开发环境没问题,但是发布到服务器出现:未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Fil ...
- Swoole 整合成一个小框架
目录 概述 效果 代码 小结 概述 这是关于 Swoole 学习的第六篇文章:Swoole 整合成一个小框架. 第五篇:Swoole 多协议 多端口 的应用 第四篇:Swoole HTTP 的应用 第 ...
- iscsi使用教程(下)
动态创建目标 安装iscsi服务端 # yum install -y scsi-target-utils.x86_64 修改配置文件 # mkdir -p ~/volumes # sed -i '$ ...
- python下一个转码的问题
我想把一个quoted的字符串经过unquote处理后,打印出来.被unquote处理后的字串应该是utf-8的,因此还需要按照utf-8再做一次解码,代码如下: import urllib im ...
- MATLAB进行无约束优化
首先先给出三个例子引入fminbnd和fminuc函数求解无约束优化,对这些函数有个初步的了解 求f=2exp(-x)sin(x)在(0,8)上的最大.最小值. 例2 边长3m的正方形铁板,四角减去相 ...