正在访问当前连接的Akka HTTP客户端证书

正在访问当前连接的Akka HTTP客户端证书,http,ssl,akka,client-certificates,akka-http,Http,Ssl,Akka,Client Certificates,Akka Http,我目前是ApacheTomcat用户,正在设计一个基于Akka HTTP的HTTPS web服务替代品,该服务使用客户端证书进行身份验证和授权。使用Tomcat,我习惯于检索具有servlet请求属性的客户机X509证书 getAttribute(“javax.servlet.request.X509Certificate”) 我需要证书,以便在处理程序中对所选路由进行一些额外的授权检查。如何使用Akka HTTP 10.0.x以这种方式检索客户端证书?您需要通过服务器的配置设置启用使用TLS会

我目前是ApacheTomcat用户,正在设计一个基于Akka HTTP的HTTPS web服务替代品,该服务使用客户端证书进行身份验证和授权。使用Tomcat,我习惯于检索具有servlet请求属性的客户机X509证书

getAttribute(“javax.servlet.request.X509Certificate”)


我需要证书,以便在处理程序中对所选路由进行一些额外的授权检查。如何使用Akka HTTP 10.0.x以这种方式检索客户端证书?

您需要通过服务器的配置设置启用使用TLS会话信息装饰请求:

akka.http.server.parsing.tls-session-info-header = on
然后使用合成标头
akka.http.scaladsl.model.headers.Tls Session info
提取特定请求的信息,如下所示:

headerValueByType[`Tls-Session-Info`]() { sessionInfo =>
  val sslSession = sessionInfo.getSession()
  sslSession.getPeerCertificates
  ... etc ...

Tls会话信息
类具有方法
peerCertificates
。因此应该可以
sessionInfo.peerCertificates