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程序上,以及谷歌的软件协议栈移动设备。

原文地址:https://www.cnblogs.com/sowhat4999/p/4496815.html