我想拦截对旧版Java servlet / JSP应用程序的请求,并使用OpenID Connect(OIDC)协议对用户进行身份验证。

我已经看到了Spring Security和SAML的示例,其中springSecurityFilterChain是用XML显式配置的,并包装了现有的非Spring servlet。但是我见过的大多数Java OIDC示例都是使用Spring Boot的,这对我来说不是一个选择。 (例如:https://developer.okta.com/blog/2017/12/18/spring-security-5-oidc)

您能否指出我在Java webapps中使用OIDC客户端的任何非Spring Boot示例?

最佳答案

我发现pac4j,特别是j2e-pac4jpac4j-oidc的组合是将OIDC插入一个普通的servlet应用程序的最简单方法。

j2e-pac4j 被实现为插入web.xml来拦截请求的普通Java servlet过滤器(实际上是两个,因为您需要一个回调处理程序)。这些过滤器引用您提供的用于配置OIDC客户端的Java类。

Okta的开发人员博客中有一个article on using pac4j-oidc with Play framework,对于Spring Java来说,这似乎也是一种合理的选择,因为Spring Security感觉太复杂或很难在旧版应用程序中设置。

10-04 20:09