1
Auth0を構成する
Auth0のサービスを利用するには、Auth0 Dashboadに設定済みのアプリケーションがある必要があります。Auth0アプリケーションは、開発中のプロジェクトに対してどのように認証が動作して欲しいかを構成する場所です。
アプリケーションを構成する
対話型のセレクターを使ってAuth0アプリケーションを新規作成するか、統合したいプロジェクトを表す既存のアプリケーションを選択します。Auth0のすべてのアプリケーションには英数字からなる一意のクライアントIDが割り当てられており、アプリケーションのコードがSDKを通じてAuth0 APIを呼び出す際に使用されます。このクイックスタートを使って構成されたすべての設定は、Dashboardのアプリケーションを自動更新します。今後、アプリケーションの管理もDashboardで行えます。完了済みの構成を見てみたい場合は、サンプルアプリケーションをご覧ください。Callback URLを構成する
Callback URLとは、Auth0がユーザーを認証後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはログイン後にアプリケーションに戻りません。サンプルプロジェクトに沿って進めている場合は、
http://localhost:3000/auth/auth0/callback
に設定してください。ログアウトURLを構成する
ログアウトURLとは、Auth0がユーザーをログアウト後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはアプリケーションからログアウトできず、エラーを受け取ります。サンプルプロジェクトに沿って進めている場合は、
http://localhost:3000
に設定してください。Allowed Web Origins(許可されているWebオリジン)を構成する
Allowed Web Origin(許可されているWebオリジン)とは、認証フローへのアクセスを許可されるURLです。これにはプロジェクトのURLが含まれている必要があります。適切に設定されていない場合、プロジェクトが認証トークンを暗黙でリフレッシュできず、ユーザーがアプリケーションを再び訪問した時、またはページを再読み込みした時にログアウトした状態になってしまいます。サンプルプロジェクトに沿って進めている場合は、
http://localhost:3000
に設定してください。2
依存関係を追加する
認証フローをハンドリングするには、カスタムOmniAuthストラテジーであるgemが追加されたら、
omniauth-auth0
を使います。Gemfile
に次の依存関係を追加します:bundle install
でインストールします。3
SDKを構成する
構成ファイル
./config/auth0.yml
を作成して、Auth0
Dashboardにあるアプリケーションの**[Settings(設定)]** で確認できるAuth0ドメイン、クライアントID、クライアントシークレットの値を指定します。4
OmniAuthミドルウェアを構成する
./config/initializers/auth0.rb
という以下のイニシャライザーファイルを作成し、前の手順で作成した構成ファイルでOmniAuth ミドルウェアを構成します。callback_path
がAuth0アプリケーションの[Allowed Callback URLs(許可されているコールバックURL)]にある値と一致することを確認します。5
Auth0コントローラーを追加する
ログアウトURLを構築するために、認証コールバック、
logout
アクション、メソッドをハンドリングするAuth0コントローラーを作成します。次のコマンドを実行します:rails generate controller auth0 callback failure logout --skip-assets --skip-helper --skip-routes --skip-template-engine
。コールバックメソッドの内部で、(request.env['omniauth.auth']
として返された)ユーザー情報のハッシュをアクティブセッションに割り当てます。ログアウトを構築するため、logout
アクションの内部でreset_session
メソッドを呼び出し、セッション内に保存されたオブジェクトをすべて消去します。それから、Auth0ログアウトエンドポイントにリダイレクトします。reset_session
についての詳細は、「Ruby on Rails ActionController」ドキュメントをご覧ください。6
ルートを構成する
これらのルートを
./config/routes.rb
ファイルに追加します。ルートは所定の位置になければなりません。これにより、RailsはさまざまなAuth0 Callback URLを前の手順で作成したAuth0コントローラーにルートする方法を認識します。チェックポイント
アプリケーションを実行して、意図通りに動作し続け、Auth0に関連したエラーを受け取らないことを確認します。7
アプリケーションにログインを追加する
ユーザーが
/auth/auth0
エンドポイントを訪れると、アプリケーションにログインできるようになりました。偽の認証要求を防ぐためには、
link_to
またはbutton_to
ヘルパーメソッドを:post
メソッドと一緒に使います。チェックポイント
選択されるとユーザーを/auth/auth0
エンドポイントにリダイレクトするボタンを、アプリケーションに追加します。ログインのためAuth0にリダイレクトされ、認証に成功するとアプリに戻されることを確認してください。8
アプリケーションにログアウトを追加する
Railsアプリケーションにログインできるようになったら、ログアウトする方法が必要です。ユーザーを
auth/logout
アクションにリダイレクトしてログアウトさせると、ユーザーはAuth0ログアウトエンドポイントへリダイレクトされます。前の手順の後にこの手順をテストするには、セッションを消去して、ユーザーをAuth0ログアウトエンドポイントへリダイレクトしなければならない可能性があります。
チェックポイント
選択されるとユーザーを/auth/logout
エンドポイントにリダイレクトするボタンを、アプリケーションに追加します。Auth0にリダイレクトされた後即座にアプリケーションに戻り、ログインした状態ではないことを確認します。9
ユーザープロファイル情報を表示する
ユーザーのプロファイルを表示するには、アプリケーションに保護されたルートがなければなりません。ルートへのアクセスはConcernで管理でき、複数のコントローラーで共有できます。Concernはユーザーが認証されていない場合、自動的にAuth0にリダイレクトしなければなりません。そうでない場合は、Concernは現在のユーザープロファイルを返します。Concernができたら、ログインユーザーを必要とするすべてのコントローラーに含めます。その後、次の例のように、ユーザーがセッションから読み込まれたら、フロントエンドで情報を表示するために使います:
session[:userinfo]
セッションからユーザーにアクセスできます:チェックポイント
Secured
concernをアプリに追加してから、認証されたユーザーがアクセスするために必要なコントローラーに含めます。
認証されたユーザーがこのコントローラー内でアクションにアクセスでき、認証されていないユーザーは認証のためにAuth0にリダイレクトされることを確認します。次のステップ
成功です!ここまで来れば、アプリケーションにログイン、ログアウト、ユーザープロファイル情報が備わっているはずです。これでクイックスタートチュートリアルは終了ですが、機能はまだまだたくさんあります。Auth0でできることについて詳しくは、以下をご覧ください。- Auth0 Dashboard - Auth0のテナントやアプリケーションを構成して管理する方法について説明します
- omniauth-auth0 SDK - このチュートリアルで使用されているSDKをより詳しく説明します
- Auth0 Marketplace - Auth0の機能性を拡張できる各種の統合を見つけられます