【问题标题】:cas oauth google failcas oauth 谷歌失败
【发布时间】:2013-03-01 05:36:33
【问题描述】:

我正在尝试将 CAS 集成到我们的 Web 应用程序中以通过 OAuth 2.0 进行身份验证,并且我已经从“https://github.com/leleuj/cas-oauth-demo-3.5.x.”(客户端演示)下载了演示应用程序。并将其部署在tomcat7中,但是使用Google帐户进行身份验证时会引发异常。我已尝试编写另一个提供程序并且身份验证正常,但无法重定向到我的原始网页。

下面是错误信息。有人熟悉 CAS Oauth 吗?期待您的回答,谢谢。

{"failure":"true","exception.message":"org.springframework.webflow.execution.ActionExecutionException: 在执行 org.jasig.cas.support.oauth.web.flow.OAuthAction@1077092 时抛出异常流 'login' 的状态 'oauthAction' -- 动作执行属性是 'map[[empty]]'","exception.stacktrace":"org.springframework.webflow.execution.ActionExecutionException: 执行 org.jasig.cas 时抛出异常.support.oauth.web.flow.OAuthAction@1077092 处于流“登录”的状态“oauthAction”——操作执行属性为“map[[empty]]”\r\n\tat org.springframework.webflow.execution。 ActionExecutor.execute(ActionExecutor.java:60)\r\n\tat org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:77)\r\n\tat org.springframework.webflow.action.AbstractAction.执行(AbstractAction.java:188)\r\n\tat org.springframework.webflow.execution.AnnotatedAction.execute(AnnotatedAction.java:145)\r\n\tat org.springframework.webflow.execution.ActionExecutor.execute(动作执行器。 java:51)\r\n\tat org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:101)\r\n\tat org.springframework.webflow.engine.State.enter(State.java: 194)\r\n\tat org.springframework.webflow.engine.Flow.start(Flow.java:535)\r\n\tat org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java: 366)\r\n\tat org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:225)\r\n\tat org.springframework.webflow.executor.FlowExecutorImpl.launchExecution(FlowExecutorImpl.java: 140)\r\n\tat org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:193)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java: 923)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)\r\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) \r\n\tat org.springframework.web.servlet.FrameworkServlet.doGet(Fra meworkServlet.java:778)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:621)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:722) \r\n\tat org.jasig.cas.web.init.SafeDispatcherServlet.service_aroundBody2(SafeDispatcherServlet.java:128)\r\n\tat org.jasig.cas.web.init.SafeDispatcherServlet.service_aroundBody3$advice(SafeDispatcherServlet. java:57)\r\n\tat org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:1)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain. java:305)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)\r\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java: 88)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)\r\n\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) \r\n\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)\r\n\tat org. apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)\r\n\tat com.github.inspektr.common.web.ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:63)\r\n\tat org. apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)\r\n\tat org.apache。 catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)\r\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)\r\n\tat org.apache.catalina。 authenticationator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)\r\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)\r\n\tat org.apache。 catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)\r\n\tat org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)\r\n\tat org.apache.catalina. core.StandardEngineValve.invoke(StandardEngineValve.java:118)\r\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)\r\n\tat org.apache.coyote.http11. AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)\r\n\tat org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)\r\n\tat org.apache.tomcat.util.net。 JioEndpoint$SocketProcessor.run(JIoEndpoint.java:307)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)\r\n\tat java.util.concurrent.ThreadPoolExecutor$ Worker.run(ThreadPoolExecutor.java:908)\r\n\tat java.lang.Thread.run(Thread.java:662)\r\n原因:java.lang.NullPointerException\r\n\tat org.jasig .cas.support.oauth.web.flow.OAuthAction.doExecute(OAuthAction.java:93)\r\n\tat org.springframework .webflow.action.AbstractAction.execute(AbstractAction.java:188)\r\n\tat org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)\r\n\t... 45 更多\r\n"}

【问题讨论】:

    标签: oauth-2.0 cas


    【解决方案1】:

    我是 CAS 的 OAuth 支持的创建者。 Google 已删除对 Google OAuth 1.0 的支持。您必须使用 Google2Provider 类切换到 Google OAuth 2.0 支持。

    【讨论】:

    • 非常感谢 jleleu 的澄清。我仍然对 CAS OAuth 有一个问题。我试过SinaWeiboApi20,认证是ok的,但是我发现OAuthAction里面service是null,所以不能重定向到原来的网页。所以我把原始页面的url放在参数“state”中,经过新浪微博认证后可以恢复,我必须添加额外的操作来获取这个参数并将其转换为服务才能工作(重定向到原始页面) )。但是当我打开其他 URL 时,它仍然会将我重定向到 CAS 登录页面。我的实现有什么问题吗?
    • 我不知道你是如何使用新浪微博Api20的:你是否为这个API创建了一些提供者?
    • 是的,我已经为新浪微博Api20创建了provider,它扩展了BaseOAuth20Provider,并实现了getAuthorizationUrl(final UserSession session)、getAccessToken(OAuthCredential credential)、extractCredentialFromParameters(只需调用super.extractCredentialFromParameters)和等可以获取访问令牌,我也可以获取用户配置文件。
    • 太棒了!我很感激你把你的贡献推回我(github.com/leleuj/pac4j 项目)。默认情况下不处理“状态”参数,请查看对它有特定支持的 FacebookProvider...
    • 感谢您的贡献。我正在使用 cas-oauth-client-demo(v4.0),它有很大帮助。我打算在我们的应用程序中扩展它。
    猜你喜欢
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    相关资源
    最近更新 更多