[英]akka http authentication using header token and external resources
我正在嘗試在 Akka HTTP 中實現自定義指令來執行基於令牌的授權並使用外部資源來驗證令牌。
我需要從 header 中提取一個令牌值,然后使用外部 web 服務向用戶驗證令牌,然后在 Z044063C23354128B336ZDF86F11872E86 中查找用戶但是,到目前為止,我一直遇到將所有這些都包含在自定義指令中的問題。 我需要提取演員系統並在我的 HTTP 請求中使用它,但是我在解組響應時失敗了,而且總的來說,我認為我在 akka Z293C9EA246FF9985986F62A65088 的指令功能中搞砸了。 我正在尋找有關如何將所有外部查找包含在指令中的建議。
所以票價我有這個:
/**
* General directive for authentication
*/
def authenticateWithHeader: Directive1[AuthenticatedUser] =
optionalHeaderValueByName("authToken").flatMap {
case Some(jwt) => {
isTokenValid(jwt) match {
case Left(user) => provide(user)
case Right(rejection) => reject(rejection)
}
}
case _ => reject(AuthenticationFailedRejection(CredentialsMissing, HttpChallenge("schema", "realm")))
}
然后我試圖在這個里面做驗證邏輯:
case class TokenUser(userType: String, userName: String)
private def getUserFromToken(token: String): Directive1[AuthenticatedUser] = {
extractActorSystem { actorSystem =>
onSuccess(Http(actorSystem).singleRequest(HttpRequest(uri = "https://myauthservice/auth").addHeader(RawHeader("token", token)))) { value =>
onComplete(Unmarshal(value.entity).to[TokenUser]) {
case Success(tokenUser) => {
// TODO: Ldap search
}
case Failure(exception) => {
logger.error(exception)
}
}
}}
}
看看這里,它可能會有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.