Authentication Akka AuthenticateAuth2Async:缺少凭据
我有以下资料:Authentication Akka AuthenticateAuth2Async:缺少凭据,authentication,oauth,oauth-2.0,akka,Authentication,Oauth,Oauth 2.0,Akka,我有以下资料: def myUserPassAuthenticator(credentials: Credentials): Future[Option[String]] = { log.info(credentials.toString) credentials match { case p@Credentials.Provided(id) if p.verify("a") => log.info("Login success!")
def myUserPassAuthenticator(credentials: Credentials): Future[Option[String]] = {
log.info(credentials.toString)
credentials match {
case p@Credentials.Provided(id) if p.verify("a") =>
log.info("Login success!")
Future.successful(Some(id))
case _ =>
log.info("Login failure!")
Future.successful(None)
}
}
val authRoute = path("login") {
authenticateOAuth2Async(realm = "secure site", myUserPassAuthenticator) { userName =>
complete(s"The user is '$userName'")
}
}
导航到该端点并输入凭据时,日志行
log.info(credentials.toString)
只是变得缺失
。这里怎么了
请求的内容类型为“application/x-www-form-urlencoded”
数据是
“授权类型=密码&用户名=此处插入用户名&密码=此处插入密码”
您应该将您的路线包装在路线中。seal
指令:
val authRoute =
Route.seal {
path("login") {
authenticateOAuth2Async(realm = "secure site", myUserPassAuthenticator) { userName =>
complete(s"The user is '$userName'")
}
}
}
如果身份验证失败,它似乎依赖于默认拒绝401
给定一个函数,在成功验证后返回一些[T],并
否则,将分别应用内部路由或拒绝内部路由
带有AuthenticationFailedRejection拒绝的请求,通过
默认值映射到401未经授权的响应
《公约》明确规定:
可以使用Route.seal“密封”路由,它依赖于范围内的
用于转换拒绝的RejectionHandler和ExceptionHandler实例
并将异常转换为客户端的相应HTTP响应
密封它对我的情况没有帮助,但也许请求是错误的?我已经更新了我的问题。我认为这里的问题与您的请求标题有关。Akka Oauth2实现(OAuth2BearerToken.scala)希望在请求上设置
承载
头,例如:Authorization:Bearer mF_9.B5f-4.1JqM.Ah,这是有意义的。奇怪的是,它只是“无”,没有返回其他错误。哦,好吧。