已将多重身份验证的Spring OAuth2实现的完整代码上载到此链接的文件共享站点.下面给出了说明,只需几分钟即可在任何计算机上重新创建当前问题.
大多数身份验证算法都能正常工作.程序不会中断,直到下面显示的控制流程结束.具体来说,Invalid CSRF token found for http://localhost:9999/uaa/oauth/token
在下面的第二次通过结束时会抛出错误.在上面的链接的应用程序中加入一个定制开发OAuth2RequestFactory
,TwoFactorAuthenticationFilter
并TwoFactorAuthenticationController
在authserver
应用此的春天启动了OAuth2 GitHub的样品. 需要对下面的代码进行哪些具体更改才能解决此CSRF令牌错误并启用双因素身份验证?
我的研究使我怀疑CustomOAuth2RequestFactory
(此链接上的API)可能是配置解决方案的地方,因为它定义了管理AuthorizationRequest
s和TokenRequest
s的方法.
官方OAuth2规范的此部分指示state
对授权端点发出的请求的参数csrf
是添加令牌的位置.
此外,链接中的代码使用此链接中描述的授权代码授权类型到官方规范,这意味着流程中的步骤C不会更新csrf
代码,从而在步骤D中触发错误.(您可以查看整个流程包括官方规范中的步骤C和步骤D. )
正在所述过程中引发电流误差第二遍通过TwoFactorAuthenticationFilter
在下面的流程图.一切都按预期工作,直到控制流进入第二通道.
以下流程图说明了可下载应用程序中的代码所采用的双因素身份验证过程的控制流程.
具体来说,s和s HTTP
序列的Firefox 标题显示,序列中POST
的每个请求都会发送GET
相同的XSRF
cookie.该XSRF
标记值不会导致一个问题,直到后POST /secure/two_factor_authentication
,其在触发服务器处理/oauth/authorize
和/oauth/token …