auth0で異なるドメインでSSOを実現しようとしているが、なかなか手ごわいです。
同様の問題で困っている開発者がかなりいるが、開発環境が異なることで、同じように解決とはいかない。
技術調査中の備忘録を今回は紹介します
SSOの実現方法をざっくり説明
・auth0の複数アプリで同一のログイン画面を使用するため、ログイン後、ログインドメインにクッキー追加する。
・リダイレクトベース認証を使い、アプリからauth0のドメインにアクセス時、クッキーが送信し、認証チェックしてSSOを実現する
アプリケーションAドメイン:app-a.com
アプリケーションAドメイン:app-b.com
authのログイン : xxxxxx.us.auth0.com(※1)
※1 ここにクッキーを保存する
問題
・app-a.com → xxxxxx.us.auth0.com/authorize (auth標準のドメイン)にリダイレクトして、SSOを実現しようとするが、ログイン画面が表示される
原因
・auth0のクッキー送信されず、SSOできず、ログイン画面を表示される
・*.auth0.comのCookieは、Safari・iOS・Firefoxなどでブロックされる
・auth0は他の何百・何千ものサービスを展開しており、「トラッキング目的のドメイン」として、ブラウザがクッキーの保存や送信を拒否する
対応
・カスタムドメインを用意する
xxxxxx.us.auth0.com → login.app-a.com
・カスタムドメインを発行しても、拒否される可能性がある。
・アプリとカスタムドメインのトップドメイン(app-a.com)を合わせることで、ファーストパーティ(第1ドメイン)扱いとなり、クッキーが送信できる可能性が高い
アプリケーションAドメイン:app-a.com
カスタムドメイン候補:auth.app-a.com