首页 文章

Spring Security OAuth2 - 自定义身份验证

提问于
浏览
1

我们需要将REST endpoints 暴露给外部世界,以便由我们无法控制的外部服务调用 . 负责此外部服务的人员似乎是安全专家( not ),因此他们不是至少使用HTTP Basic Auth或任何其他真正的身份验证机制,而是使用固定密钥对自己进行身份验证 . 它是这样的:

GET /endpoint?secret=WE_ARE_THE_TRUE_GUYS

由于我们已经在使用 spring-security-oauth2 ,我们希望将此身份验证流程与我们现有的流程集成,以便我们可以像对待 ResourceServer 上的其他每个enpoint一样为此 endpoints 指定规则,获得相同的错误处理行为和我们如何实现自定义身份验证过滤器 - 或者它可能是什么 - 从查询字符串中获取 secret 参数,将其转换为某种"client credentials",用于 AuthorizationServer 上的预配置客户端,并与之无缝集成剩下的OAuth2流程?

1 回答

  • 2

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

相关问题