spring-security - Spring Security OAuth2 - 自定义身份验证

标签 spring-security spring-security-oauth2

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

GET /endpoint?secret=WE_ARE_THE_TRUE_GUYS

因为我们已经在使用 spring-security-oauth2 ,我们希望将此身份验证流程与现有流程集成,以便我们可以为此端点指定规则,就像为 ResourceServer 上的每个其他端点指定规则一样。 ,获得相同的错误处理行为等等。我们应该如何实现自定义身份验证过滤器 - 或任何可能的东西 - 来获取 secret查询字符串中的参数,将其转换为 AuthorizationServer 上预配置客户端的某种“客户端凭据”并与 OAuth2 流程的其余部分无缝集成?

最佳答案

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

关于spring-security - Spring Security OAuth2 - 自定义身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28722501/

相关文章:

angular - Spring Security OAuth2 在 cookie 中存储 access_token

spring-boot - Spring Cloud Zuul API 网关不会为无状态 session 转发 JWT token

java - 如何将身份验证从 LDAP 更改为 JDBC 以保护我的应用程序

java - 将属性文件或 xml 文件中的属性值注入(inject) PreAuthorize(...) java 注释(未解决)

java - Oauth2 protected 资源

jwt - Spring Security 无状态 JWT 身份验证 - 如何获取其他 jwt 字段?

java - OAuth2 身份验证服务的集成测试?

java - Spring Security 不允许登录页面

spring-security - Spring Security 帐户锁定

java - Spring 社交登录和 Spring Security 自定义身份验证管理器