0

Introduction/Background

I'm looking to enable token authentication for multiple microservices and users. Both applications and users are $user objects.

I need to be able to authenticate once (hence token) using an auth server on a subdomain. I then need to be able to pass around a token that can be managed (revoked/refreshed whatever) by the Auth server.

The microservices are Laravel based, so using Airlock makes sense. Airlock generates tokens easily using:

  • $token = $user->createToken(now())

However, I see no method to manually check the validity of these tokens... So I assumed they are available in the database.

Airlock suggests that the token be returned as follows:

  • $token->plainTextToken

This produces a token, as expected. To my understanding, this is a public facing token. It does not match the token in the personal_access_tokens table.

Lets call these PublicToken and PrivateToken.

The private token is actually located in:

  • $token->accessToken->token

I want to be able to manually switch between a PublicToken. I assume Airlock is doing some security here.. and I want to invoke these secure methods required to check a PublicToken against the PrivateToken.

Please do not say "it's in middleware" ... The point is that I have multiple microservices and usertypes sharing a database. I have an auth server that will end up on secure architecture, and some of the other microservices wont be.... fundamentally I need to do a manual authentication because normal plug and play wont work. Using Airlock as the foundation is great. But I need to be able to know how to convert between public and private tokens.

Essentially I'm looking for the real version of the following psuedocode:

  • if( someTranslationFunction($public_token) == $private_token ) ...

TLDR: The problem

How do I validate a $token->plainText value against a $token manually?

elb98rm
  • 670
  • 6
  • 21
  • You may want to look into JWTs. I don't think Airlock is for you; it's explicitly described as "featherweight" and "simple", which your infrastructure - lots of microservices - doesn't sound like it matches. – ceejayoz Feb 28 '20 at 21:15
  • I can't think of anything more "simple" than generate a token and be able to check it? – elb98rm Feb 28 '20 at 21:21
  • Like I said, look at JWTs. Airlock is stated to be simple auth for SPAs. – ceejayoz Feb 28 '20 at 21:23

0 Answers0