当前位置: 首页 > 知识库问答 >
问题:

Spring Security在所有级别的身份验证中使用X509

鞠子轩
2023-03-14

我有一个遗留应用程序,我正在将它从用户密码转换为使用基于证书的身份验证。我使用的是Tomcat7,我的应用程序需要根据用户试图访问的应用程序中的URL支持4种类型的安全性

例如:少数servlet将使用HTTP少数servlet将使用HTTPS而不进行任何身份验证少数servlet将使用PKI进行相互身份验证,但是用户不会被预先知道,因此任何在证书链中拥有有效证书的用户都将被授予访问权限。应用程序的重置是管理,因此它可以基于预定义的用户证书CNS进行基于角色的访问。

我的Tomcat Server.xml中有一个在443处运行HTTPS的连接器,clientauth=“want”

我有我的应用程序web.xml,它有一个springSecurityFilterChain,它列出了我希望需要HTTPS的任何URL

我的SpringSecurityContext.xml有一个x509部分,它有subject-principal-regex=“cn=(.*?)”user-service-ref=“userDetailsService”,它从属性文件中读取预注册的用户和角色。从那里,我列出了intercept-url模式,我希望在这些模式中有一个requires-channel=“https”,说明哪些模式需要哪些角色。

下面是我的3个XML文件中的一些片段,以显示我正在谈论的内容。我只在springSecurity中包含了httpsandcertlink,以显示我正在尝试添加哪一个,但无法开始工作。

server.xml


maxthreads=“150”sslenabled=“true”scheme“https”secure=“true”
clientauth=“want”sslprotocol“tls”
keystorefile=“doesntmatter”
truststorefile=“doesntmatter”/>

web.xml


client-cert
MyApp


SpringSecurityFilterChain
org.SpringFramework.web.filter.DelegatingFilterProxy

mapping>
SpringSecurityFilterChain
*.go
/httpsonlylink
/httpsandcertlink

SpringSecurityContext.xml











共有1个答案

濮赤岩
2023-03-14

一种方法是通过创建一个自动分配给所有用户的附加“有效证书”角色,将缺少的需求附加到角色需求上。应该已经需要一个有效的证书链,所以所需要的只是设置一个拦截URL模式,该模式将匹配任何需要有效证书并需要“有效证书”角色的URL,确保该规则在需要特定角色的规则之后匹配。

 类似资料:
  • 问题内容: 这是我的情况: 一个Web应用程序对许多应用程序执行某种SSO 登录的用户,而不是单击链接,该应用就会向正确的应用发布包含用户信息(名称,pwd [无用],角色)的帖子 我正在其中一个应用程序上实现SpringSecurity以从其功能中受益(会话中的权限,其类提供的方法等) 因此,我需要开发一个 自定义过滤器 -我猜想-能够从请求中检索用户信息,通过自定义 DetailsUserSe

  • 我试图在一个反应式Spring Boot应用程序中配置一个Spring Security性,该应用程序具有一个Vuejs前端,在未经身份验证时将用户重定向到外部OpenID提供程序(用于身份验证)。在用户通过OpenID提供程序进行身份验证并重定向回应用程序(前端)后,将根据OpenID提供程序的响应创建用户名密码身份验证令牌(身份验证),并手动进行身份验证。 但是,在执行此操作时,应用程序似乎无

  • 问题内容: 我正在尝试连接到HTTPS URL,但是我需要使用客户端身份验证以及第三方软件在我的系统上放置的证书。 我丝毫不知道如何找到或使用它,我所要做的只是C#示例代码,这与我为此找到的所有Java答案都大不相同。(例如,KeyStore显然需要某种密码吗?) 这是我拥有的C#示例代码 然后,它仅遍历WS2_store_Certs CertificateCollection并一路检查它们。再进

  • 我正在使用SpringBoot开发具有微服务架构的Rest Backend。为了保护endpoint,我使用了JWT令牌机制。我正在使用Zuul API网关。 如果请求需要权限(来自JWT的角色),它将被转发到正确的微服务。Zuul api网关的“WebSecurityConfigrerAdapter”如下。 这样,我必须在这个类中编写每个请求授权部分。因此,我希望使用方法级安全性,即“Enabl

  • 我有一个asp。net(C#)设置为使用LDAP进行身份验证。一切正常,我可以和我们目录中的任何用户一起登录。问题是,我需要将某些页面限制为特定组中的人。我正在使用登录查看帐户文件夹的方法。 我的网站设计很简单,它有三个页面,一个供所有人查看(账户文件夹之外),另外两个需要身份验证。我希望一个组可以访问两个网页,另一个组只能访问其中一个网页。 我试过: 但不管我的用户不在该组中。我有一个LDAP浏

  • 我目前正在使用FirebaseAuth和web小部件库firebaseui web开发基于VueJS的登录流原型。 成功认证后(无论是< code>password还是< code>google provider ),小部件加载栏会不断重复,firebaseui-web不会触发其< code > signinseccesswithauthresult 回调。但是对< code > identity