Rails5とknockでAuth0のJWTトークンを検証しようとしたが401になる


おそらくAuth0の管理画面上のclient_secretがbase64_encodeされていたものがされなくなったのが原因だったのだが、knockでエラーメッセージが何も出なくて、binding.pryしながらソース読んだりわりと大変だったのでメモ

binding.pryしてknockを実行していくと、JWTのでコードのところで以下のようになる。

JWT::VerificationError: Signature verification raised
from /bundle/gems/jwt-1.5.6/lib/jwt.rb:156:in `verify_signature_algo'
config/initializers/knock.rb
...

config.token_secret_signature_key = -> { JWT.base64url_encode(JWT.base64url_decode Rails.application.secrets.auth0_client_secret) }

...

こんな感じにしたら動いた