库在Java Web App中集成Google的OAuth / OpenID混合?
我正在构建一个需要访问用户的Google日历数据的Java Web应用程序 – 因此我认为OAuth / OpenID混合是最好的方法。
什么是最好的库来处理这项工作 – 并减少我的代码量?
我尝试了openid4java和Spring Security OpenID (两者都不支持混合)以及dyuproject (无法将其集成)。
PS:GAE不是一种选择
有任何想法吗?
我不知道任何集成库,但我使用OpenID库( openid4java ),OAuth库( net.oauth Java实现 [编辑:或Scribe ])并且我的赤手如下:
我的OAuth consumer key
类似于www.example.com,因此我使用http://*.example.com作为OpenID realm
。
在将用户重定向到Google OpenID端点时,我添加了以下参数(以重定向url或表单):
openid.ns.ext2=http://specs.openid.net/extensions/oauth/1.0 openid.ext2.consumer= openid.ext2.scope=
作为回报,除了普通的OpenID响应,我收到:
openid.ext2.request_token=
我将收到的请求令牌与access-token和access-secret交换,这是进行OAuth授权呼叫所需要的。 就这样!
请注意,在普通OAuth和请求令牌中,您必须使用请求密钥和validation程序,但此处您不需要它们。
要获得更好的视图,您可以阅读Google OAuth , Google OpenID和OpenID OAuth Extension 。
编辑: 这里(评论8)是openid4java的OAuth扩展,它为您完成上述操作。
它不支持OpenID,但Scribe是一个非常好的支持Google的OAuth Java库。