After twitter changing their api access to SSL/TLS on 14th Jan, CAS cannot login through Twitter. The exception is as below.
StandardWrapperValve[cas]: PWC1406: Servlet.service() for servlet cas threw exception org.scribe.exceptions.OAuthException: Response body is incorrect. Can't extract token and secret from this: 'Failed to exchange tokens' at org.scribe.extractors.TokenExtractorImpl.extract(TokenExtractorImpl.java:41) at org.scribe.extractors.TokenExtractorImpl.extract(TokenExtractorImpl.java:27) at org.scribe.oauth.ProxyOAuth10aServiceImpl.getAccessToken(ProxyOAuth10aServiceImpl.java:103) at org.pac4j.oauth.client.BaseOAuth10Client.getAccessToken(BaseOAuth10Client.java:110) at org.pac4j.oauth.client.BaseOAuthClient.retrieveUserProfile(BaseOAuthClient.java:163) at org.pac4j.oauth.client.BaseOAuthClient.retrieveUserProfile(BaseOAuthClient.java:44) at org.pac4j.core.client.BaseClient.getUserProfile(BaseClient.java:147) at org.pac4j.core.client.BaseClient.getUserProfile(BaseClient.java:52) at org.jasig.cas.support.pac4j.authentication.handler.support.ClientAuthenticationHandler.doAuthentication(ClientAuthenticationHandler.java:80) at org.jasig.cas.authentication.handler.support.AbstractPreAndPostProcessingAuthenticationHandler.authenticate(AbstractPreAndPostProcessingAuthenticationHandler.java:78) at org.jasig.cas.authentication.PolicyBasedAuthenticationManager.authenticateInternal(PolicyBasedAuthenticationManager.java:211) at org.jasig.cas.authentication.PolicyBasedAuthenticationManager.authenticate(PolicyBasedAuthenticationManager.java:143) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at
------------------------
------------------------
StandardWrapperValve[cas]: PWC1406: Servlet.service() for servlet cas threw exception java.lang.IllegalArgumentException: Cannot get String from a null object at org.scribe.utils.Preconditions.check(Preconditions.java:82) at org.scribe.utils.Preconditions.checkNotNull(Preconditions.java:29) at org.scribe.utils.StreamUtils.getStreamContents(StreamUtils.java:20) at org.scribe.model.Response.parseBodyContents(Response.java:41) at org.scribe.model.Response.getBody(Response.java:67) at org.pac4j.oauth.client.BaseOAuthClient.sendRequestForData(BaseOAuthClient.java:235) at org.pac4j.oauth.client.BaseOAuthClient.retrieveUserProfileFromToken(BaseOAuthClient.java:201) at org.pac4j.oauth.client.BaseOAuthClient.retrieveUserProfile(BaseOAuthClient.java:164) at org.pac4j.oauth.client.BaseOAuthClient.retrieveUserProfile(BaseOAuthClient.java:44) at org.pac4j.core.client.BaseClient.getUserProfile(BaseClient.java:147) at org.pac4j.core.client.BaseClient.getUserProfile(BaseClient.java:52) at org.jasig.cas.support.pac4j.authentication.handler.support.ClientAuthenticationHandler.doAuthentication(ClientAuthenticationHandler.java:80) at org.jasig.cas.authentication.handler.support.AbstractPreAndPostProcessingAuthenticationHandler.authenticate(AbstractPreAndPostProcessingAuthenticationHandler.java:78) at org.jasig.cas.authentication.PolicyBasedAuthenticationManager.authenticateInternal(PolicyBasedAuthenticationManager.java:211) at org.jasig.cas.authentication.PolicyBasedAuthenticationManager.authenticate(PolicyBasedAuthenticationManager.java:143) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at