nakayama

nakayama blog page

Backend day6

今回は認証システムとしてOAuth2の実装を行う

2.4 OAUth2


フロー

  1. ユーサーが認証プロバイダ(facebook, googleなど)を選択し、リダイレクト(URLにクライアントアプリケーションIDが付与される)
  2. ユーザーが選択したWebサイトにログインし、クライアントサービスのアクセスを許可する。
  3. ユーザーが再び、クライアントアプリケーションに再びリダイレクトされる。 (許可コードと呼ばれるデータが含まれている。)
  4. 内部で、クライアントアプリケーションは認可プロバイダーに許可コードを送信する。認証プロバイダーはアクセストークンを返す。
  5. クライアントアプリケーションはアクセストークンを含む認証済みのリクエストを行い、ユーザー情報や現在の状況などを取得する。

つまり、要約すると、既存のサービスを頼って、そのサービスに情報があったら、このユーザーにアクセスを許可するという事。

2.4.1 クライアントアプリの識別

フロー


google developer consle → APIの認証 → 認証情報 → 認証情報を追加 → OAuth2.0クライアントID

クライアントIDと秘密の値を取得

認証プロバイダのサイトで作成したプロジェクト、クライアント、アカウントを利用するために、Gomniauthに対して利用先の認証プロバイダーと認証方法を指定する。

関数


  • gomniauth.Provider(arg) ... 引数認証プロバイダーのオブジェクトを取得する。
  • GetBeginAuthURL()... 認証のプロセスを開始するURLを取得する。

認証プロバイダの許可を押してからのフロー


許可を押すとあるURLにリダイレクトされる。 このURLをGomniauthが処理してくれる。

具体的には、OAuth2の仕様に従って許可コードをGoogleなどのサーバーとの間で交換し、アクセストークンを取得する。これで、ユーザーのプライベートなデータをアクセスする事ができる。また、これによって、コールバック関数のハンドラの実装に専念できる。