OktaからGoogle Workspaceにシングルサインオンしてみた
先日、Microsoft Entra IDをIdPにして、Google Workspaceに対してのユーザの同期とシングルサインオンを実装しました。一方でそれ以外のパターンとしては、Oktaが結構IT業界では耳にするようになりました。
このOktaをIdPにして、Google Workspaceに対してシングルサインオンで入れるようにしてみようと思い、検証をしてみました。以下はAzure Entra IDからProvisioning & SSOでGoogle Workspaceと連携した時の記事になります。
目次
今回利用するサービス
Oktaとはクラウド型のIdentity as a Serviceと呼ばれるディレクトリサービスです。クラウド上でのID/PWを一元管理し、様々なWebサービスに対してSAMLでログインといった形で統合することができます。Microsoft365を入れてるような場所ならばEntra IDを使うのが定石ですが、Google Workspaceを入れてる場合には、GWS自身がIdPになりカスタムSAMLアプリで他のWebサービスにSSOできたりします。
故にM365やGoogle Workspaceを導入済み企業の場合あまり馴染みがないサービスになるかもしれません。しかしこれらを持っていない、もしくはGoogle Workspaceのテナントはあっても、Cloud Identityのアカウントしかないといったようなケースでは使う機会があるかもしれません(この場合あくまでもGWS側はGCPやGoogle Analyticsを使うためだけの窓口的ポジションになります)。
※ちなみにEntra IDはP1では890円/1ユーザ/1月掛かるのですが、Oktaは320円/1ユーザ/1月($2)なので全然安いです。ただ二段階認証やら色々オプションを追加していくとEntra IDを超えちゃうかも。
事前準備
今回30日間トライアルのテナントを作成してみて、以下のような手順で準備を行いました。同一IDのユーザはGoogle Workspace側に追加しておいてください(今回はCloud Identity Freeで追加しています)
Admin Consoleを日本語化する
oktaはデフォルトではAdmin Consoleに入ると英語のUIになっています。2023年7月からは日本語化する設定が独立して用意されていて、これをオンにすることで使いやすくなります。
- https://自分のテナント-admin.okta.com/admin/getting-startedを開くか?oktaにログインした直後の画面で、管理者をクリックするとAdmin Consoleに入れます
- 左サイドバーのSettings→Featuresをクリック
- Admin Console Japanese Translationsのスイッチをオンにする
- 一度この画面を抜けて入り直す
- サイド1.のURLからAdmin Consoleに入ると日本語化されてる(なぜかリロードでは変化しなかった)
図:Admin Consoleはここから入る
図:日本語化設定はここ
図:日本語化されました
ユーザを追加する
30日間トライアル環境は最大で5名までユーザを追加できるようです。今回はシングルサインオンのテストなので、Google Workspace側のドメインと同じメアドで登録することになります。
- Admin Consoleにログインする
- 左サイドバーのダッシュボード⇒スタートアップを開く
- Oktaにユーザーを追加するのインポート元をクリックし、ユーザを直接追加を今回はクリック
- 上部にあるユーザを追加ボタンをクリック
- ダイアログが出てくるので、以下のような感じで入力する
1234ユーザタイプ:ユーザ姓、名を入力ユーザ名とメインのメールアドレスは同じ項目を入力パスワードを設定するにチェックをいれて、パスワードを入力 - 保存をクリックする
ユーザ一覧にユーザが追加されました。ユーザのメールアドレスは、Google Workspace側に登録してるユーザのメアドと一致させておく必要があります。
図:ユーザの追加画面
シングルサインオン設定
事前準備はこれでオッケーなので、Google Workspace側およびOkta側にシングルサインオンに関する設定を追加します。今回Google Workspace側の特定のユーザは新しく作った組織部門「oktaman」に所属させており、oktaman部門に対してサードパーティIdPの設定を追加していきます。
図:この部門に対して作業を行う
Okta側の設定
アプリの追加
まずはOkta側からSSO設定のためのいろいろなパラメータを取得しておきます。
- OktaのAdmin Consoleにログインする
- 左サイドバーからアプリケーション⇒アプリケーションを開く
- アプリカタログを参照をクリックする
- 検索窓からGoogle Workspaceを検索し、Google Workspaceを選択する
- 統合を追加ボタンをクリックする
- GoogleAppsの会社のドメインには、GWSで使ってるドメイン名を入れます。
- 次のリンクを表示は適当に選んだり外したりしてください。
- ブラウザープラグインの自動送信のチェックは外します。
- 次へをクリック
- サインオンオプションでは、SAML2.0を選択し、デフォルトのリレー状態は空のまま、高度なサインオン設定のRPIDは空のまま
- アプリケーションユーザー名の形式は「メール」とする
- 次でアプリケーションのユーザー名を更新では、「作成・更新」とする
- 完了をクリックする
図:カタログに登録されてる
図:ドメインを入れる
図:SAML2.0で設定する
図:資格情報の詳細
サインオン設定
本来、この作業の前段階に「プロビジョニング」がありますが、今回はユーザの新規作成等は行わないのでスルーしています。以下の設定でシングルサインオンの設定を作ります。
- Google Workspaceアプリの設定タブの「サインオン」をクリックする
- 下の方にあるSAML署名証明書の「新しい証明書を作成」をクリックして証明書を作る
- 今作成したレコードの右側にある「アクション」をクリックして「アクティブ化」をクリック
- ダイアログが出るので証明書をアクティブ化をクリックする
- もう一度、今作成したレコードの右側にある「アクション」をクリックして「証明書をダウンロード」をクリック
- 拡張子「cert」というファイルがダウンロードされる
- 上に戻って、SAML2.0「詳細」をクリックする
- サインオンURLおよびサインアウトURLをコピーしておく
図:証明書をダウンロード
図:サインインURL等をコピーする
アプリを割り当て
作成したアプリをユーザに割り当てないとSSOログインにはなりません。以下の手順で割り当てます。
- 左サイドバーからアプリケーション⇒アプリケーションを開く
- ユーザをアプリに割り当てるをクリックする
- 次の画面で左側のGoogle Workspaceを選択してからユーザを選択して、次へをクリック
- 割当を確定をクリックする
図:割り当てないと始まらない
図:ユーザを割り当てる
Google Workspace側の設定
Okta側で入手したサインオンURLや証明書をもとに、Google Workspace側でサードパーティIdPをセットします。この時、SAML プロファイルを追加 ボタンは使用しないでくださいだそうです。
- 管理コンソールにログインする
- 左サイドパネルからセキュリティ⇒認証⇒サードパーティの IdP による SSOを開きます。
- 組織向けのサードパーティの SSO プロファイルをクリック
- サードパーティの ID プロバイダで SSO を設定するを有効にする
- ログインページの URLにOktaで入手したサインオンURLを入力
- ログアウトページのURLにはOktaで入手したサインアウトURLを入力する。
- 証明書をアップロードをクリックし、入手したcertファイルを指定してアップロードする
- ドメイン固有の発行元を使用のチェックを入れる
- パスワード変更用 URLは、「https://okta側のテナント名.okta.com/enduser/setting」を入力
- 保存をクリックする
- SSOの設定画面に戻って、次に組織部門またはグループ向けの SSO プロファイルの割り当てを管理の中の「使ってみる」をクリック
- 組織部門選択画面になるので、ルートのドメインを選択してこちらは「なし」を選択して保存する(後述の注意事項を参照。ルートの場合は全ユーザが対象になります)
- 作成したoktaman部門を選択して、こちらは「組織向けのサードパーティの SSO プロファイル」を指定してオーバーライドをクリックする
図:サードパーティIdPの設定
図:組織部門に割り当てる
シングルサインオンをテスト
さてこれでシングルサインオンができる状態になっていればオッケーです。テストをする場合は事前に全部のGoogleアカウントからはログアウトしておくか?Chromeのシークレットウィンドウ(もしくはゲストプロファイル)で作業をしましょう。
- Googleログイン画面を適当に開く(例えばGoogleアカウント画面)
- まずはGoogleログイン画面が出るので通常通り、GWSに登録されてるアドレスを入力して次へをクリック
- するとOktaのログイン画面にリダイレクトされます。
- もう一度2.を入力して、サインインを維持するにチェックを入れて次へをクリック(これは任意)
- Oktaのユーザ登録時の対象ユーザのパスワードを入力する
- 最初だけ二段階認証としてOkta Verifyの要求が来ます(Google Playだとこちら)。セットアップをクリックして指示に従いましょう。
- 完了すると、Googleアカウントのページに入れるようになりました。
これで、Okta側だけでパスワード管理をすることで、Google側の各種サービスはパスワードレスでシングルサインオンできるようになりました。あとは、GWS側でログアウトをするとOktaも連動してログアウトします。また、ログアウトしない限りはGWSへのログイン時には認証を求められませんし、GWS側でパスワード変更などはする必要がありません。
※Okta Verifyで出てくるQRコードですが、Google AuthentiatorやMicrosoft Authenticatorでは登録ができません。
図:Oktaログインに飛ばされた
関連リンク
- Okta - Google Workspace プロビジョニング
- Okta のユーザー プロビジョニングとシングル サインオン
- Okta(オクタ)とは?特徴的な機能や導入するメリット・注意点を解説
- Okta Workforce Identity Cloudを使ってみる
- Okta管理者向け設定画面「Okta Admin Console」が日本語対応となりました
- How to Access Okta Admin Console Login Page when Default App for Sign-In Widget Is Enabled
- OktaのOINカタログアプリ「Google Workspace」が、マルチIdP連携に対応した話
- OktaとGoogle WorkspaceのSSO・Provisioning設定について徹底解説するよ!