Spring Security OAuth2-自定义身份验证



我们需要向外部世界公开一个REST端点,以便由我们不控制的外部服务调用。负责此外部服务的人员似乎是安全专家(而非),因此他们不使用至少HTTP基本身份验证或任何其他真正的身份验证机制,而是使用固定的秘密对自己进行身份验证。它是这样的:

GET /endpoint?secret=WE_ARE_THE_TRUE_GUYS

由于我们已经在使用spring-security-oauth2,我们希望将此身份验证流与现有流集成,这样我们就可以像对ResourceServer上的每个其他端点一样为该端点指定规则,并获得相同的错误处理行为等。我们应该如何实现一个自定义身份验证过滤器——或者不管它是什么——它将从查询字符串中获取secret参数,将其转换为AuthorizationServer上预先配置的客户端的某种"客户端凭据",并与OAuth2流的其余部分无缝集成?

如果您可以将"WE_ARE_THE_TRUE_GUYS"转换为有效的OAuth2Authentication,那么您所需要的只是一个身份验证过滤器来完成此操作(并将其粘贴到SecurityContext中)。然后,下游过滤器和处理程序的行为将与真正的OAuth2身份验证一样。如果我是你,我会在过滤器中设置一些非常严格的条件,以将请求与来自这个非常不寻常且不太安全的身份验证通道的允许资源上的请求相匹配。

最新更新