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

时间:2017-06-01 11:46:33

标签: http ssl akka client-certificates akka-http

我是当前的Apache Tomcat用户,他使用客户端证书进行身份验证和授权来设计基于Akka HTTP的HTTPS Web服务替代品。使用Tomcat我习惯于使用servlet请求属性检索客户端X509Certificate

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

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

1 个答案:

答案 0 :(得分:3)

您需要通过服务器的配置设置启用具有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 ...