Open kanzawa2 opened 7 years ago
tokenを作成するために,以下の記事を参考にGoogleのOAuth認証を行い,camomeのアカウントを作成した. http://www.swlab.cs.okayama-u.ac.jp/lab/nom/articles/ikeda-y-20160928-171521
Wikiのclass_diagram_about_authenticationにまとめられているクラス図とモデルの実装を比較したところ,以下のことがわかった.
今後は,認証周りの処理を調査する.
現状報告
現在以下のような実装を行っている.
問題点
上記の問題点に対処するため,カレンダー表示時にmaster_passを要求するフォームが必要である.master_passを要求するフォームの作成は未完了である.
devise と omniauth-google-oauth2 を用いて認証を行う場合に,refresh_token が発行される条件について調査した. 以下は prompt の設定を,設定しない,consent および select_account としたときのユーザ体験と refresh_token 発行についてまとめたものである.
promptを設定しない | prompt: consent | prompt: select_account | |
---|---|---|---|
ユーザ体験 | 1回目のみアカウント選択 | 毎回アカウント選択 | 毎回アカウント選択 |
refresh_token 発行 | 1回目のみ発行 | 毎回発行 | 1回目のみ発行 |
現在,OAuth2 による認証と認可でプロバイダを分ける実装を進めている. コミット: https://github.com/Ryota0312/camome/commit/4611e5938ef6bdbefe03f1b19c0be66f228c48cd
プロバイダの追加
gem omniauth-google-oauth2 を継承し option :name
の部分をオーバーライドすることで新たにプロバイダを作成する.以下の場合,google_oauth2_calendar
が新たなプロバイダ名になる.
require 'omniauth-google-oauth2'
module OmniAuth
module Strategies
class GoogleOauth2Calendar < OmniAuth::Strategies::GoogleOauth2
option :name, 'google_oauth2_calendar'
end
end
end
omniauth の設定
Rails.application.config.middleware.use OmniAuth::Builder do
require '/camome/lib/google_oauth2_calendar.rb'
provider :google_oauth2,
ApplicationSettings.oauth.google.application_id,
ApplicationSettings.oauth.google.application_secret,
prompt: "consent",
skip_jwt: true
provider :google_oauth2_calendar, ApplicationSettings.oauth.google_calendar.application_id, ApplicationSettings.oauth.google_calendar.application_secret, scope: "calendar profile", prompt: "consent", skip_jwt: true end
Created from AI0384 of minute 437.