aliakhtar
(Ali A)
September 29, 2018, 7:13am
1
Can the OAuth authenticator directive do the following:
From bearer <token>, pass the <token> portion to the authenticator
Have the authenticator either return the Account object (if verified), or a None
If verified, make the Account object available for further processing (to prevent needing to hit the db again), and if not, reject the request.
Is something like this possible via either the Oauth authenticators or any other directives, or should I write this own my own?
aliakhtar
(Ali A)
September 30, 2018, 11:09am
2
authenticateOAuth2Async(realm, authenticator) worked perfectly for this. I just had the authenticator return the Account object to avoid a second db lookup. Worked like a charm.
Tests were a little hard to figure out, I had to dig around the example specs ( https://github.com/akka/akka-http/blob/master/docs/src/test/scala/docs/http/scaladsl/server/directives/SecurityDirectivesExamplesSpec.scala#L42 ) to figure out how to add credentials to the test:
Post("/foo", SomeRequest("test")) ~> addCredentials(OAuth2BearerToken(myToken)) ~> route ~> check