Hallo habe einen Dienst, der mit Akka-Http entwickelt wurde. Ich muss OAuth dazu hinzufügen und gemäß documentation verwende ich authenticateOAuth2
dafür.Kann OAuth2 mit Akka-Http nicht authentifizieren
Allerdings ist der Code nicht kompilieren und gibt den Fehler als
Typenkonflikt, erwartet: (L) => server.Route, aktuell: (OauthInfo) => server.Route
Ich kann keine geeignete Lösung finden, um dieses Problem zu beheben. Ich probierte sogar den genauen Code, der in der example in der Dokumentation erwähnt wird, aber es löst immer noch ähnliche Kompilierzeitfehler aus.
Ich benutze akka-http mit Kreis.
Hier ist mein Code:
def route(implicit system: ActorSystem, mat: ActorMaterializer): Route =
Route.seal {
pathPrefix("newsletter-preferences") {
authenticateOAuth2(realm = "Secure site", authenticator) { authInfo =>
path("frequency"/LongNumber) { custNum =>
authorize(hasScopes(authInfo)) {
frequencyPreference(custNum) ~ addFreqPref(custNum)
}
} ~ path("pause"/LongNumber) { custNum =>
authorize(hasScopes(authInfo)) {
pauseInfo(custNum) ~ addPauseInfo(custNum) ~ unPauseUser(custNum)
}
}
} ~
path("health") {
healthRoute()
}
}
}
def hasScopes(authInfo: OAuthInfo): Boolean = ???
def authenticator(credentials: Credentials)(
implicit system: ActorSystem,
mat: ActorMaterializer): Option[OAuthInfo] = {
credentials match {
case p @ Credentials.Provided(token) =>
???
case _ => None
}
}