🔥

Omniauth::MicrosoftGraph実践メモ

2023/12/27に公開

Omniauth::MicrosoftGraphでOAuth2認証をしようとしたときにハマった点の個人的なメモです。Rails 7.1.2です。まだ開発環境での動作確認までです。

使用したStrategy → Omniauth::MicrosoftGraph

トラブルシューティング

config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  # 認証可能なユーザーをテナントのユーザーに限定する場合はproviderにclient_optionsを渡す必要がある(by ChatGPT)
  provider :microsoft_graph, ENV['ENTRA_APPLICATION_CLIENT_ID'], ENV['ENTRA_APPLICATION_CLIENT_SECRET'], client_options: {
  site:          "https://login.microsoftonline.com/#{ENV['ENTRA_TENANT_ID']}",
  authorize_url: "https://login.microsoftonline.com/#{ENV['ENTRA_TENANT_ID']}/oauth2/v2.0/authorize",
  token_url:     "https://login.microsoftonline.com/#{ENV['ENTRA_TENANT_ID']}/oauth2/v2.0/token"
}

  # Google Cloud Shellで実行しているためかfull_hostを指定しないとAADSTS50011エラーがでた
  configure do |config|
    config.full_host = "https://8***********.cs-asia-east1-vger.cloudshell.dev"
  end
end

参考にした記事:
Rails上でOmniAuthを使う時のredirect_uriの設定

config/initializers/session_store.rb
# Cookieを利用しているとActionDispatch::Cookies::CookieOverflowエラーになったためcache_storeに変更
# 自作アプリはシングルサーバー&サーバー再起動でセッションリセットされても問題ない
Rails.application.config.session_store :cache_store

以下のコマンドでキャッシュを有効にする

rails dev:cache

参考にした記事:
omniauthを使った認証時にsessionが消える時の対処法, Rails 6 で omniauth-cognito-idp を使って Amazon Cognito 認証を実装するサンプル

認証関連の実装で参考にした記事

Rails+omniauth-google-oauth2でGoogleログイン(devise無し)

Discussion