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

ste*_*nos 7 java openid oauth

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

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

我尝试了openid4javaSpring Security OpenID(两者都不支持混合)以及dyuproject(无法将其集成).

PS:GAE不是一种选择

有任何想法吗?

Ali*_*iba 6

我不知道任何集成库,但我使用OpenID库(openid4java),OAuth库(net.oauth Java实现 [编辑:或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>
Run Code Online (Sandbox Code Playgroud)

作为回报,除了简单的OpenID响应,我收到:

openid.ext2.request_token=<request-token>
Run Code Online (Sandbox Code Playgroud)

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

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

要获得更好的视图,您可以阅读Google OAuth,Google OpenIDOpenID OAuth Extension.

编辑:这里(评论8)是openid4java的OAuth扩展,它为您完成上述操作.