Auth0のチュートリアルにしたがって作成していたところタイトルのエラーが発生
サンプルのリポからcloneしても同じ内容だったので、おそらく設定などの不備があると思い調査
調査したところ以前作成したnestjsの設定と全く異なる部分がなかったので、とりあえずpryを入れて一つずつみて行った結果、envからデータを上手く撮れていないことが判明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | def self.jwks_hash binding.pry # TODO, ここでエラー発生 jwks_raw = Net::HTTP.get URI("https://#{ENV['AUTH0_DOMAIN']}/.well-known/jwks.json") jwks_keys = Array(JSON.parse(jwks_raw)['keys']) Hash[ jwks_keys .map do |k| [ k['kid'], OpenSSL::X509::Certificate.new( Base64.decode64(k['x5c'].first) ).public_key ] end ] end |
どうやらこの部分のenvがnilになっていて
1 | jwks_raw = Net::HTTP.get URI("https://#{ENV['AUTH0_DOMAIN']}/.well-known/jwks.json") |
、出力すると
1 2 | ENV['AUTH0_DOMAIN'] => nil |
となっていました。
なのでdotenvの設定を修正
→gemがdotenv-railsではなくdotenvだったので変更したところ
1 2 3 | "https://#{ENV['AUTH0_DOMAIN']}/.well-known/jwks.json" => "https://my-domain.auth0.com/.well-known/jwks.json" |
このように表示されました。
そして、DOMAINが通ったところで問題なくリクエストが通りましt!!!
参考記事
Rails5にAuth0を利用して認証機構を最速で追加して、爆速開発環境を構築していくぜ!
Building Secure APIs with Rails 6 and Auth0
Errno::ECONNREFUSED (Failed to open TCP connection to :80 – Authenticated requests fails