Spring 如何扩展OAuth2授权端点的参数?

Spring 如何扩展OAuth2授权端点的参数?,spring,spring-security,spring-security-oauth2,Spring,Spring Security,Spring Security Oauth2,关于基于Spring的OAuth2提供程序的授权端点,我遇到了一些问题。我需要从客户那里得到比目前可能得到的更多的信息。这就是我想要实现的目标: 稍后,我需要在身份验证过程中使用自定义参数。有没有简单的方法可以用我的自定义参数扩展默认参数,或者我需要自己实现某个类 对当前Spring代码中身份验证端点的工作方式进行了一些研究。我发现授权端点使用了一个函数,该函数接受所有正在设置的参数,然后将其转换为AuthorizationRequest。在进一步研究AuthorizationRequest类

关于基于Spring的OAuth2提供程序的授权端点,我遇到了一些问题。我需要从客户那里得到比目前可能得到的更多的信息。这就是我想要实现的目标:

稍后,我需要在身份验证过程中使用自定义参数。有没有简单的方法可以用我的自定义参数扩展默认参数,或者我需要自己实现某个类

对当前Spring代码中身份验证端点的工作方式进行了一些研究。我发现授权端点使用了一个函数,该函数接受所有正在设置的参数,然后将其转换为AuthorizationRequest。在进一步研究AuthorizationRequest类时,我发现它包含一个在整个授权过程中都被填充的类。但它似乎没有被我的自定义参数填充(如上所示)。实际上,这只是通过查看代码来实现的,所以我可能是错的

使用我的自定义实现扩展AuthorizationEndpoint是一个好主意还是有更好更干净的方法

更新#1(07-10-2015)

我想使用自定义参数的地方是在我自己的AuthenticationProvider实现中。我需要在这门课的课堂上提供信息

更新#2(07-10-2015)

似乎AuthorizationProvider在AuthorizationEndpoint之前被调用。这意味着自定义参数是在我需要它的类之后获得的(所以太晚了)


也许我可以通过扩展Spring安全类的一部分或者通过JavaScript在HTML中获取引用Url。这是一个好主意还是我应该使用另一种方法?

因此我通过在谷歌上搜索更多的内容来解决这个问题。 您需要做的是与HttpSessionRequestCache对话以获取引用URL。这就是我在自己的AuthenticationProvider实现中解决它的方法

@Component
public class CustomProvider implements AuthenticationProvider {

  @Autowired
  private HttpServletRequest httpRequest;

  @Autowired
  private HttpServletResponse httpResponse;

  @Override
  public Authentication authenticate(Authentication authentication) throws AuthenticationException {

    SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(httpRequest, httpResponse);
    logger.info("Referral URL: " + savedRequest.getRedirectUrl());
    logger.info("Parameters: " + savedRequest.getParameterMap().keySet().toString());

  }

}

这将打印出在进入spring security的登录页面之前调用的请求的URL。第二个log方法打印出在此URL中找到的参数。帮助我为我的问题创建解决方案。

AuthenticationProvider
在授权端点之前运行,所以我认为您需要另一种方法。哦,这可能是问题所在。你能告诉我在哪里可以找到关于身份验证流如何工作的好解释吗?或者我只需要在Spring自己的文档中阅读它?我也做了一些调试,并说出了你的意思。我设法解决了这个问题(见下面的答案)。无论如何,谢谢你的帮助