0

I'm using gems devise_token_auth' and graphql_devise` for my authentication and I'm able to generate the token. Here is an example one that I just generated along with client and expiry:

#<struct DeviseTokenAuth::TokenFactory::Token
 client="TeoomlVVA0xMCNKff4Q3Fw",
 token="DOXnJR8iPlwHgXHUYJXi6w",
 token_hash="$2a$10$PdliAqqiGXyp1ARfTQzYEeQMKxSF7X1peXgyDLRBz44cKXlI1zh1W",

Then when I'm trying to authenticate with it, it can't decode the token raising ArgumentError: invalid base64 from inside of the devise_token_auth gem from set_user_by_token method that calls decode_bearer_token. The method receives my token and on this line returns {}: JSON.parse(Base64.strict_decode64(encoded_token)) rescue {}. The token is present but when I run just Base64.strict_decode64(encoded_token) from from <internal:pack>:29:in `unpack1', it raises an error ArgumentError: invalid base64.

I'm using Rails version: 7.0.4.3 Ruby version: ruby 3.2.2

The token itself is generated during login in the same gem in user.rb in create_token in this line: token = DeviseTokenAuth::TokenFactory.create(client: client, lifespan: lifespan, cost: cost) with all args being nil. The token is returned and later this output returned to the front end via the rest of pipeline of devise_token_auth and graphql_devise:

tokens[token.client] = {
        token:  token.token_hash,
        expiry: token.expiry
      }.merge!(token_extras)

Even at this time, the token can't be decoded if I try to call Base64.strict_decode64(encoded_token) on it.

Alex
  • 1
  • 1

0 Answers0