Search code examples
scalaheaderauthorizationakka-httpillegalargumentexception

Scala Authorization header - Akka HTTP IllegalArgumentException


I'm trying in Scala to make a request to send a user/pass:

def makeRequestWithRadiusHeader(header: String) = {
    val urlEncHeaderVal = java.net.URLEncoder.encode(s"Basic $header", "utf-8")
    val request = exampleNmsRequest() ~> addHeader("Authorization", urlEncHeaderVal)

    makeRequest(request)
  }

where header is "user:password" and on addHeader I get an error like this:

java.lang.IllegalArgumentException: Illegal HTTP header 'Authorization': Invalid input '%', expected token68-start, '=', OWS or 'EOI' (line 1, column 11): Basic+user%3Apassword

If I try without encoding, I get the same error with ':'


Solution

  • I've solved it giving to the function makeRequestWithRadiusHeader a base64 converted parameter.

    val validRadiusHeader = BaseEncoding.base64().encode("aladdin:OpenSesame".getBytes(Charsets.UTF_8))
    val response = makeRequestWithRadiusHeader(validRadiusHeader)
    

    This way it works fine. It is the way Basic access authentication works.