这个是一个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的更多相关文章

  1. 网络爬虫2--PHP/CURL库(client URL Request Library)

    PHP/CURL库功能   多种传输协议.CURL(client URL Request Library),含义是“客户端URL请求库”. 不像上一篇所用的PHP内置网络函数,PHP/CURL支持多种 ...

  2. lwip Light Weight (轻型)IP协议

    wip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈. 外文名 lwip 开发者 瑞典计算机科学院 说    明 Light Weight (轻型)I ...

  3. 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 ...

  4. 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 编译时 ...

  5. 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 ...

  6. 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 ...

  7. com.rabbitmq.client.impl.Frame.readFrom(Frame.java:95)

    RabbitMQ 基于Erlang 实现, 客户端可以用Python | Java | Ruby | PHP | C# | Javascript | Go等语言来实现.这里做个java语言的测试.首先 ...

  8. TCP/UDP client/server library for Java, 最好的java语言tcp udp 服务器客户端实现库

    这个库andrdoi也可以用,而且是基于类的使用方式: 它支持类似聊天室的功能,即一个人说话,所有客户端都能收到,当然也支持点点通信.它还支持 RMI 的方式调用远程过程. https://githu ...

  9. lwIP(Light Weight IP)协议

    信号量 信号量结构体:struct sys_semt struct _sys_sem { void *sem; };  err_t sys_sem_new(sys_sem_t *sem, u8_t c ...

随机推荐

  1. javaScript之事件处理程序

    事件就是用户或浏览器自身执行的某个动作,JavaScript与HTML的交互也是通过事件实现的.而相应某个事件的函数就叫做事件处理函数.包括以下几种: 1.HTML事件处理程序    某个元素支持的每 ...

  2. File 类 操作实例

    File 操作 <介绍> 尽管java.io定义的大多数类是实行流式操作的,File类不是.它直接处理文件和文件系统.也就是说,File类没有指定信息怎样从文件读取或向文件存储:它描述了文 ...

  3. C++知识点总结(二)

    1.字符串的部分拷贝 ① 利用标准库函数strncpy(),可以将一字符串的一部分拷贝到另一个字符串中.strncpy()函数有3个参数:第一个参数是目录字符串:第二个参 数是源字符串:第三个参数是一 ...

  4. Learning Python 008 正则表达式-001

    Python 正则表达式 总结 这节课讲讲正真使用的技术 - 正真表达式. 文本爬虫 什么是正则表达式 正则表达式这个名词听起来就有一种很官方的感觉,但是它是一个很很很有用的技术.我用语言是不能形容它 ...

  5. 在PCL中如何实现点云压缩(1)

    点云由庞大的数据集组成,这些数据集通过距离.颜色.法线等附加信息来描述空间三维点.此外,点云能以非常高的速率被创建出来,因此需要占用相当大的存储资源,一旦点云需要存储或者通过速率受限制的通信信道进行传 ...

  6. try catch 块中debug时发现错误细节的一次记录

    在解决已有代码的一个问题时,有一个try catch块,基本代码如下: try { //do something } catch { LogHelper.Debug(typeof(myHelper), ...

  7. 5. Python大法之告别脚本小子--各类URL采集器编写

    在i春秋上面,有很多不错的脚本: https://bbs.ichunqiu.com/forum.php?mod=collection&action=view&ctid=137 http ...

  8. 1.浅谈XXE漏洞攻击与防御

    XML基础 在介绍XXE漏洞前,先学习温顾一下XML的基础知识.XML被设计为传输和存储数据,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具. XML是一种用于标记电子文 ...

  9. linux下apache2的虚拟主机配置

    1,起因 在一星期前吧,大波说既然咱们有了自己的服务器,二级域名了.可以考虑怎样每人一个域名,分别指向我们各自的空间.想法挺好,避免我们个人的东西放在同一主页上.那就做吧 2,第一次尝试 (1)在域名 ...

  10. HDU 5242 Game (贪心)

    题意:给定一棵树,要求从根结点1走k次,每次都是到叶子结点结束,把走过的所有的结点权值加起来,最大是多少. 析:先把每个结点到根结点的路径之和求出来,然后按权值从大到小排序,然后每次把路径中的权值求出 ...