private def hmacUsername()

in cdslogviewer/app/auth/Security.scala [85:106]


  private def hmacUsername(header: RequestHeader, auth: String):Either[LoginResult, LoginResultOK[String]] = {
    logger.debug(s"headers: ${header.headers.toSimpleMap.toString}")
    if(Conf.sharedSecret.isEmpty){
      logger.error("Unable to process server->server request, shared_secret is not set in application.conf")
      Left(LoginResultMisconfigured(auth))
    } else {
      HMAC
        .calculateHmac(header, Conf.sharedSecret)
        .map(calculatedSig => {
          if ("HMAC "+calculatedSig == auth) Right(LoginResultOK("hmac")) else Left(LoginResultInvalid("hmac"))
        })
        .map({
          case loginOk @ Right(_)=>loginOk
          case Left(_)=>
            HMAC.calculateHmac(header, Conf.sharedSecret, false)
              .map(calculatedSig=>{
                if("HMAC "+calculatedSig==auth) Right(LoginResultOK("hmac")) else Left(LoginResultInvalid("hmac"))
              }).getOrElse(Left(LoginResultInvalid("")))
        })
        .getOrElse(Left(LoginResultInvalid("")))
    }
  }