6

私の akka-http アプリケーションで、WWW-Authenticateヘッダーで応答する別のセキュリティ サービスからの応答を返しています。akka-http がこのヘッダーを解析し、WWW-Authenticate値を文字列にレンダリングすると、パラメーターの 1 つで引用符が欠落しています。レンダリングに何か欠けているのでしょうか、それとも akka-http のバグでしょうか?

テストケースは次のとおりです。

import akka.http.scaladsl.model.HttpHeader
import akka.http.scaladsl.model.HttpHeader.ParsingResult
import akka.http.scaladsl.model.headers.{`WWW-Authenticate`, HttpChallenge}
import org.scalatest.{Matchers, WordSpec}

class wwwAuthenticateParserTest extends WordSpec with Matchers {

  "WWW-Authenticate header" should {
    "have correctly-quoted strings" in {
      val rawHeader = HttpHeader.parse("WWW-Authenticate",
                                       "Bearer error=\"invalid_request\", error_description=\"Access token is not found\"")
      val expectedHeader = `WWW-Authenticate`(HttpChallenge("Bearer",
                                                            "",
                                                            Map("error" -> "invalid_request", "error_description" -> "Access token is not found")))
      rawHeader match {
        case ParsingResult.Ok(`WWW-Authenticate`(challenges), _) =>
          challenges.head should be(expectedHeader.challenges.head)
          challenges.head.params("error") should be("invalid_request")
          challenges.head.toString should be("Bearer realm=\"\",error=\"invalid_request\",error_description=\"Access token is not found\"")
        case _ => ???
      }
    }

3 番目のアサーションは失敗し、前後の引用符がinvalid_request欠落しています。akka-http アプリが送信する応答のヘッダーにも引用符がありません。

4

0 に答える 0