库在Java Web App中集成Google的OAuth / OpenID混合?

时间:2010-11-01 12:58:27

标签: java openid oauth

我正在构建一个需要访问用户的Google日历数据的Java Web应用程序 - 因此我认为OAuth / OpenID混合是最好的方式。

处理这项工作的最佳库是什么 - 并减少了我的代码量?

我试过 openid4java & Spring Security OpenID (两者都不支持混合)以及 dyuproject (无法将其集成)。

PS:GAE不是一个选项

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

我不知道任何集成库,但是我使用OpenID库(openid4java),OAuth库(net.oauth Java implementation [编辑:或Scribe])并且我的裸露双手如下:

我的OAuth consumer key与www.example.com类似,因此我将http://*.example.com用作OpenID realm

在将用户重定向到Google OpenID端点时,我添加了以下参数(以重定向网址或表单):

openid.ns.ext2=http://specs.openid.net/extensions/oauth/1.0
openid.ext2.consumer=<my oauth consumer key>
openid.ext2.scope=<oauth scope to be authorized>

作为回报,除了普通的OpenID响应,我收到:

openid.ext2.request_token=<request-token>

我将收到的请求令牌与access-token和access-secret交换,这是进行OAuth授权呼叫所需要的。就这样!

请注意,在普通OAuth和请求令牌中,您必须使用请求密钥和验证程序,但此处您不需要它们。

要想获得更好的观点,您可以阅读Google OAuthGoogle OpenIDOpenID OAuth Extension

修改:Here (comment 8)是openid4java的OAuth扩展,可以为您完成上述操作。

答案 1 :(得分:4)

它不支持OpenID,但Scribe是一个支持Google的非常好的OAuth Java库。