在过去几周内,使用Google的Oauth2身份验证系统和Apache Oltu库的一套应用程序已停止运行。
所有通过Google注册或登录的尝试都会遇到同样的错误:
Login/registration action failed: java.io.IOException: Attempted read from closed stream.
最近一切正常,我们在中间时间内没有修改代码或应用程序。
Google端是否有更改导致所有这些请求失败?
我的Google开发者控制台似乎没有任何日志记录或信息。 在我的应用程序中,日志条目表示尝试验证哪个不成功。
现在失败的代码,曾经成功的是:
// obtain a AuthRequest message to be sent to the OpenID provider
OAuthClientRequest oauthRequest = OAuthClientRequest
.authorizationLocation(discovery.getAuthzEndpoint())
.setClientId(Oauth2Util.getClientId())
.setRedirectURI(responseURL)
.setResponseType(ResponseType.CODE.toString())
.setScope(GOOGLE_SCOPE)
.setState(state)
.buildQueryMessage();
response.sendRedirect(oauthRequest.getLocationUri());
触发异常:
java.io.IOException: Attempted read from closed stream.
感谢所有建议
答案 0 :(得分:0)
谷歌于4月20日退出OpenID 2.0。见http://googledevelopers.blogspot.co.uk/2015/03/reminder-to-migrate-to-oauth-20-or.html
答案 1 :(得分:0)
在我的代码中:
OAuthClientRequest oauthRequest = OAuthClientRequest
.authorizationLocation(discovery.getAuthzEndpoint())
正在使用内部“发现”模块,该模块试图以在OpenID关闭时弃用的方式获取信息
首选的Oltu方式似乎是
OAuthClientRequest oauthRequest = OAuthClientRequest
.authorizationProvider(OAuthProviderType.GOOGLE)
效果更好
rtm:https://cwiki.apache.org/confluence/display/OLTU/OAuth+2.0+Client+Quickstart