在本文开始前,先给大家分享几个好用的IDEA激活码
这里提供几个最新的激活码,有需要的朋友可以试试,先到先用:
2022Intellij IDEA最新激活码,IDEA稳定专属激活码(持续更新)
2022Pycharm激活码,Pycharm稳定专属激活码(持续更新)
2022Webstorm激活码,Webstorm稳定专属激活码(持续更新)
Spring Integration 是一个非常强大且可扩展的框架,用于集成。但有时如何获取您需要的一些信息并非易事。在我的例子中——用于在 TLS(基于 TLS 的系统日志)连接中进行相互身份验证的证书。您有一个接收 a 的 Java 方法,Message
理想情况下您希望获得客户端用来验证自身的证书链(例如,您可能需要提取 CN)。
幸运的是,Spring Integration 很灵活。它可以做到,但它有点令人费解。我将使用 XML 表示法,但同样可以通过 Java 配置来实现。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
< bean id = "nioConnectionSupport" class = "com.yourcompany.util.net.TLSMutualNioConnectionSupport" > < constructor-arg ref = "sslContextSupport" /> < constructor-arg value = "false" /> </ bean > < bean id = "interceptorFactoryChain" class = "org.springframework.integration.ip.tcp.connection.TcpConnectionInterceptorFactoryChain" > < property name = "interceptors" > < bean class = "com.yourcompany.util.net.TLSSyslogInterceptorFactory" /> </ property > </ bean > < int-ip:tcp-connection-factory id = "tlsConnectionFactory" type = "server" port = "${tcp.tls.port}" using-nio = "true" nio-connection-support = "nioConnectionSupport" single-use = "false" interceptor-factory-chain = "interceptorFactoryChain" /> |
这sslContextSupport
通常是一个org.springframework.integration.ip.tcp.connection.DefaultTcpSSLContextSupport
或自定义实现(例如,如果您想使用“盲”信任存储)
然后你需要这两个类。您可以在它们各自的要点上查看它们:TLSSyslogInterceptorFactory和TLSMutualNioConnectionSupport。
这些类有什么作用?TLSSyslogInterceptorFactory
为包含客户端证书的消息设置新标头。该类TLSMutualNioConnectionSupport
在 SSL 引擎上设置“wantClientAuth”选项。还有另一个选项——“needClientAuth”,用于客户端身份验证,而不仅仅是支持它。根据用例,您可以使用其中一种。
然后,您可以通过以下方式在处理程序方法中获取证书:
1 | Certificate[] certificates = (Certificate[]) message.getHeaders().get(TLSSyslogInterceptorFactory.TLS_CLIENT_CERTIFICATES); |
我想分享一个小技巧,以帮助下一个尝试实现这一目标的人。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://idea.medeming.com/share/107.html