【问题标题】:How can I extend the parameters of the OAuth2 authorization endpoint?如何扩展 OAuth2 授权端点的参数?
【发布时间】:2015-10-07 20:14:53
【问题描述】:

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

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

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

用我的自定义实现来扩展 AuthorizationEndpoint 是个好主意,还是有更好更简洁的方法来做到这一点?

更新 #1 (07-10-2015)

我想使用自定义参数的地方是在我自己的 AuthenticationProvider 实现中。我需要在此类的authenticate method 中提供信息。

更新 #2 (07-10-2015)

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

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

【问题讨论】:

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

标签: spring spring-security spring-security-oauth2


【解决方案1】:

所以我设法通过在 Google 上搜索更多内容自己解决了这个问题。 您需要做的是与 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。第二个日志方法打印出在这个 URL 中找到的参数。 This question and answer 帮助我为我的问题创建了一个解决方案。

【讨论】:

    猜你喜欢
    • 2018-11-13
    • 2022-10-18
    • 1970-01-01
    • 2021-10-18
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2020-05-01
    相关资源
    最近更新 更多