Auth0でGWSアカウントとEmail/Passwordアカウントをセキュアに共存させる【前編】
Auth0
Auth0はWebアプリやAPIなどのアプリケーションに認証・認可のサービスを提供するIDaaSです。
Auth0のデータベースにID/パスワードを登録するユーザーはもちろん、各種ソーシャルアカウント(Google,Facebook,X,LINEなど)でのログインにも対応しています。
また、多要素認証なども提供しており、特定のアプリケーションに対しては特定のソーシャルコネクションからのアカウントのみ許可する、などきめ細かい設定等もできるサービスです。
参考: Auth0
なお2021年にAuth0はOktaによって買収されており、今後は幅広いサービスの展開も予想されます。
参考: OktaとAuth0
放送局におけるアカウント管理の課題
放送ビジネスにおいて、放送局の社員以外にもコンテンツの制作をはじめとする業務に携わるスタッフはたくさんいます。
一方で昨今、業界を問わずセキュリティ要件の高まりも受けて、各企業内でのアカウント管理はより一層セキュアな方向に向かっているのは明らかです。
MBSでもGoogle Workspaceを契約していますが、「この特番だけMBSのコンテンツ制作に携わっていただくスタッフにもアカウントを発行して端末には証明書を入れる」などといった運用を行うのは難しいのが現実です。
ちなみにMBSのGWS導入については、こちらをご覧ください。
Google Cloud Day ’23 | Tour Google Workspace パネルディスカッション 〜現場から浸透する DX とコラボレーションの推進〜
Google Cloud Day ’23 | Tour Google Workspace パネルディスカッション 〜現場から浸透する DX とコラボレーションの推進〜
そこで業務で扱うアプリケーションへのアクセスにAuth0を用いて、GWSアカウントを持っているユーザーにはSSOで手軽に、持っていないユーザーには多要素認証を用いてセキュアに接続する環境を作る方法を紹介します。
GWS or Email/Passwordアカウントでの認証
Google WorkspaceアカウントはGWSログイン時に証明書等で特定の端末からしかアクセスさせない設定をしているものとし、これを信頼することとします。
Auth0のソーシャルコネクションのGoogleアカウントの設定でGoogle Workspaceの特定テナントからのみのアクセスに制限します。
一方でUsername-Password-Authenticationのユーザーについては、このままではEmailアドレス、パスワードのみでログイン可能になってしまいます。
ですので、こちらのユーザーに対してのみ、Auth0で多要素認証を用いることでセキュリティを向上させます。
Auho0における多要素認証は様々な方法が使えますが、今回はSMS認証を用いた方法を紹介します。
全て書いてしまうと非常に長くなるので、【前編】である本記事ではGoogleアカウントを用いたソーシャルコネクションの設定を紹介します。
ソーシャルコネクションの設定
今回はGoogleのソーシャルコネクションを利用しますが、Auth0ではテナント作成時にデフォルトでgoogle-oauth2は有効化されています。
一方で、デフォルトではGoogleとのソーシャルコネクションにDeveloper Keysが用いられており、簡単に開発者がテストをすることができる一方で、いくつか制限があり、本番利用は推奨されていません。
そこでまずは組織のGoogleアカウントのCliendIDとSecretを発行します。
Google側の設定
Google側の設定はAuth0の以下の手順を参考に設定します。
Google Cloudの「APIとサービス」→「OAuth 同意画面」からサインイン画面の設定などを行います。
ここでGWSの組織内部からのアクセスに限定したい場合は、内部を選択します。
アプリ名やサポートメール、ロゴなどは好きなように設定します。
承認済みドメインには"auth0.com"を設定します。
スコープを設定することで、Auth0のプロジェクトがGoogleアカウントから特定の種類のプライベートユーザデータにアクセスできるようになります。次に「認証情報」タブに進みます。
「認証情報を作成」→「OAuthクライアントID」からクライアントIDを作成します。
アプリケーションの種類は「ウェブアプリケーション」、
「承認済みの JavaScript 生成元」は「https://(Auth0ドメイン)」
「承認済みのリダイレクト URI」は「https//(Auth0ドメイン)/login/callback」
を設定します。
以上の設定を行うとOAuthのClientIDとSecretが表示されます。この情報は次のセクションで必要になりますので控えておきましょう。
Auth0側の設定
Auth0側の設定は非常に簡単です。
「Authentication」→「Social」からデフォルトで設定されている「google-oauth2」を開きます。(なければ「Create Connection」で作成しましょう。)
Client IDとClient Secretに先ほどGoogle Cloudで取得した、クライアントIDとクライアントシークレットを入力して保存します。
これで「Authentication」→「Social」→「google-oauth2」の上部にある「Try Connection」で接続のテストをしてみましょう。
組織内のアカウント(私のアカウント)からテストをすると以下のような画面が表示され、ソーシャルコネクションに成功し情報の取得もできていることがわかります。