【发布时间】: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。这是个好主意还是我应该使用其他方法?
【问题讨论】:
-
AuthenticationProvider在AuthorizationEndpoint之前运行,所以我认为您需要另一种方法。 -
哦,这可能是个问题。你能告诉我在哪里可以找到关于身份验证流程如何工作的很好的解释,还是我只需要在 Spring 自己的文档中阅读它?我也做了一些调试,说出你的意思。
-
我设法解决了这个问题(请参阅下面的答案)。无论如何感谢您的帮助
标签: spring spring-security spring-security-oauth2