Backend day6
今回は認証システムとしてOAuth2の実装を行う
2.4 OAUth2
フロー
- ユーサーが認証プロバイダ(facebook, googleなど)を選択し、リダイレクト(URLにクライアントアプリケーションIDが付与される)
- ユーザーが選択したWebサイトにログインし、クライアントサービスのアクセスを許可する。
- ユーザーが再び、クライアントアプリケーションに再びリダイレクトされる。 (許可コードと呼ばれるデータが含まれている。)
- 内部で、クライアントアプリケーションは認可プロバイダーに許可コードを送信する。認証プロバイダーはアクセストークンを返す。
- クライアントアプリケーションはアクセストークンを含む認証済みのリクエストを行い、ユーザー情報や現在の状況などを取得する。
つまり、要約すると、既存のサービスを頼って、そのサービスに情報があったら、このユーザーにアクセスを許可するという事。
2.4.1 クライアントアプリの識別
フロー
google developer consle → APIの認証 → 認証情報 → 認証情報を追加 → OAuth2.0クライアントID
クライアントIDと秘密の値を取得
認証プロバイダのサイトで作成したプロジェクト、クライアント、アカウントを利用するために、Gomniauthに対して利用先の認証プロバイダーと認証方法を指定する。
関数
- gomniauth.Provider(arg) ... 引数認証プロバイダーのオブジェクトを取得する。
- GetBeginAuthURL()... 認証のプロセスを開始するURLを取得する。
認証プロバイダの許可を押してからのフロー
許可を押すとあるURLにリダイレクトされる。 このURLをGomniauthが処理してくれる。
具体的には、OAuth2の仕様に従って許可コードをGoogleなどのサーバーとの間で交換し、アクセストークンを取得する。これで、ユーザーのプライベートなデータをアクセスする事ができる。また、これによって、コールバック関数のハンドラの実装に専念できる。