Spring security 通过spring social传递额外的查询/表单参数
我正在使用JHipster生成的Spring Social和Spring Security构建一个单页应用程序 我试图在用户通过某个社交身份验证提供商的身份验证后捕获原始查询参数 例如: 调用/signin/someprovider?show=someEntityId并在成功验证后将用户重定向到/signup/,我需要一种获取“someEntityId”的方法 我假设不同的http调用使得传递/存储参数变得困难。 是否有一些Spring内置的功能可以使用/重用,或者如何解决这个问题 更新 请求线程如下所示: (1) 浏览器->Spring security 通过spring social传递额外的查询/表单参数,spring-security,spring-security-oauth2,spring-social,spring-social-google,Spring Security,Spring Security Oauth2,Spring Social,Spring Social Google,我正在使用JHipster生成的Spring Social和Spring Security构建一个单页应用程序 我试图在用户通过某个社交身份验证提供商的身份验证后捕获原始查询参数 例如: 调用/signin/someprovider?show=someEntityId并在成功验证后将用户重定向到/signup/,我需要一种获取“someEntityId”的方法 我假设不同的http调用使得传递/存储参数变得困难。 是否有一些Spring内置的功能可以使用/重用,或者如何解决这个问题 更新 请求线
http://localhost:9060/signin/authenticationProvider?show=**someEntityId**
https://authenticationProvider
http://localhost:9060/signin/authenticationProvider?state=SomeState&code=SomeCode
http://localhost:9060/social/signup
这一切都以失败告终
@GetMapping("/signup")
public RedirectView signUp(WebRequest webRequest, @CookieValue(name = "NG_TRANSLATE_LANG_KEY", required = false, defaultValue = Constants.DEFAULT_LANGUAGE) String langKey) {
try {
Connection<?> connection = providerSignInUtils.getConnectionFromSession(webRequest);
socialService.createSocialUser(connection, langKey.replace("\"", ""));
@GetMapping(“/signup”)
public RedirectView注册(WebRequest WebRequest,@CookieValue(name=“NG\u TRANSLATE\u LANG\u KEY”,required=false,defaultValue=Constants.DEFAULT\u LANGUAGE)字符串langKey){
试一试{
连接连接=providerSignInUtils.getConnectionFromSession(webRequest);
创建socialService.createSocialUser(连接,langKey.replace(“\”,”);
此时,它希望使用原始参数调用函数someEntityId
根据?show=someEntityId的说法,参数应该编码在Oauth2请求的状态参数中,以便生存
从(1)到(3)。在(3)中,必须将状态参数添加到重定向uri,以便可以在(4)中解码原始参数
这看起来需要做很多工作,还是我遗漏了什么?如果有一种方法可以让会话变量在(1)中存储参数,然后在(4)中再次获取参数,那就太好了。因为版本1.1.3 Spring Social会自行创建状态参数并将其用作CSRF令牌,请参见-因此您可以(且不应)在状态参数中对其他参数进行编码 相反,如果使用
ProviderSignInControl
启用提供者签名,则可以使用ProviderSignInAcceptor
在会话中中间存储此类参数(在预签名(…)
和后签名(…)
)
如果使用SocialAuthenticationFilter
,我想也有类似的方法