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("")))
}
}