gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:53:44 25 4
gpt4 key购买 nike

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

custom parameter

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

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

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

更新 #1 (07-10-2015)

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

更新 #2 (07-10-2015)

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

enter image description here

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

最佳答案

因此,我通过在 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帮助我为我的问题创建解决方案。

关于spring - 如何扩展 OAuth2 授权端点的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32986049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com