Open1

Auth0めも

saksak

IDaaSと呼ばれる認証・認可を自前で作り込まなくても良くなるやつ

SaaSの一種?なので利用料取られる(7000ユーザーぐらいまでは無料らしいけど)

結構機能豊富なのと最初にとりあえずで入れるならサクッと行けるので割と選択肢としてありな気もする(障害点が増えるのを許容できない or コストを許容できないとかだと厳しいかも)

あとRailsだけじゃなくReactとかネイティブアプリとかにも簡単に組み込める

概念的なやつ:

  • tenant:アカウントの下に紐づく、影響範囲を分離したいレベルで切り分けることができるぽい、よくありそうなのは環境別(dev、prod)とかユーザー種類別(普通のユーザー、admin)とか?
  • application:テナントに紐づく、iosアプリとかwebアプリとかの単位で作れば良さそう(基本webだけかな
  • connection: SNSログインとか各種プロバイダーを使いたい時に作る(めっちゃ種類ある

railsの場合:

https://auth0.com/docs/quickstart/webapp/rails/01-login

↑をなぞるだけで基本いける

チュートリアルの通りやると、InvalidAuthenticityTokenがずっと出てるけどcsrf_meta_tagついてるしなあっていうエラーが出て困ったけどこれで解決した(パスつけるだけ)

https://github.com/cookpad/omniauth-rails_csrf_protection/issues/8#issuecomment-659603672

ログイン時の見た目を変えたい時:

https://auth0.com/docs/brand-and-customize/universal-login-page-templates#using-the-auth0-cli-

liquidでhtml書けば色々できるっぽい、cli使うのが楽そう

ちょろっとした修正なら管理画面からもいける(ロゴ変えるだけとか

memo:

悩んだこと

  • railsに一般的なサーバーからレスポンスを返す感じでauth0を組み込もうとすると複数テナントを設定するのが難しかった

    • 具体的にはinitializers/auth0.rb側で複数のテナントを読み込めなさそう ⇒ これはランタイムで設定可能ぽいので回避できるかも?
    • buttonタグを置いて/auth/auth0にリクエストを投げた時に自動でリダイレクトが走るぽいがここの制御をコントロールできなそう(どのタイミングでテナントの設定読み込んでるのかわからなかった
    • ポップアップで開くオプションが用意されてなさそう
  • reactを組み込んでる場合はreact側でauth0の認証を完結させるのが良さそう

  • 最終的なApplication周りの設定イメージ

    • Applications側で設定するのはreactから呼び出すやつ+Rails APIから呼び出すやつ(あとterraformのやつも一応いる)
      • Application分割することで権限も分けれる(フロントとAPI
    • APIs側で設定するのは↑のRails APIが利用するものだけ、audienceの設定はこいつを参照する
    • ↑がsellerとbuyerでそれぞれあるイメージ(なのでrails側のjwtの検証処理も二つある