SAML による SSO 、便利ですよね。
その利便性やセキュリティ面でのメリットについてはこちらの記事に詳細な説明があります。
ただ残念ながら SAML の機能を持つアプリケーション(クラウドサービス)ばかりではないのが現状です。。機能として提供されていても上位プラン(追加でコストが発生)でのみ利用可能なケースも多いです。
OIDC にも非対応なアプリケーションの場合は ID ・パスワードの入力によるユーザ認証がほとんどですが、そのようなアプリケーションへの SSO の仕組みである、 Azure AD の パスワードベースの SSO 機能を試してみました。
概要
公式ドキュメントから抜粋します。
このオプションは、HTML のサインイン ページを備えたあらゆる Web サイトで利用できます。 パスワードベースの SSO はパスワード保管とも呼ばれます。 パスワードベースの SSO では、ID フェデレーションをサポートしない Web アプリケーションに対するユーザーのアクセスとパスワードを管理できます。
ざっくり紹介すると Azure AD と連携するパスワードマネージャ( Web ブラウザの拡張機能とセット)です。
- Azure AD 側で対象クラウドサービスのパスワード情報を保管
- サポートしている Web ブラウザは Microsoft Edge, Google Chrome, Mozilla Firefox
- ブラウザ拡張機能( My Apps Secure Sign-in Extension )のインストールが必要
- 事前に Azure AD の認証を済ませておく必要がある
- 対象アプリケーションの資格情報の入力、サインイン処理が自動で実行される
- [ 条件付きアクセス ] との組み合わせも可能
Azure AD との認証が済んでいれば、各アプリケーションの認証( ID・ パスワード入力)を代行してくれるので SSO が実現できるというものです。
Azure AD と SSO が可能なサードパーティのパスワードマネージャもありますが、ユーザ数が増えてくるとチリツモでコストが気になってきます。
(こちらの記事で比較情報をまとまっています。) qiita.com
パスワードベースの SSO は Azure AD の Free プランでも利用できるようなので、コストの観点から本機能に期待をしたのですが「ユーザ(非管理者)自身では Azure AD に記憶させた資格情報を変更することができない」ため、組織で運用するのは難しそうです。
以下、試したことの備忘録です。
パスワードベースの SSO 設定
こちらのドキュメントに沿って設定します。
- Web ブラウザ: Chrome
- Extension: My Apps Secure Sign-in Extension
- SSO 対象のアプリケーション: Chatwork
Azure ポータル - [ Azure Active Directory ] - [ エンタープライズアプリケーション ] にアクセスし、 [ すべてのアプリケーション ] - [ 新しいアプリケーション ] をクリックします。
[ 独自のアプリケーション ] をクリックし、アプリケーションの設定をします。
- お使いのアプリの名称: Chatwork ( Free )
- 「ギャラリーに見つからないその他のアプリケーションを統合します」を指定
ギャラリーアプリケーションに登録済みの SAML ベースのサインイン設定がサジェストされますが、スルーして [ 作成 ]をクリックします。
[ シングルサインオン ] の設定画面で [ パスワードベース ]を選択します。
Chatwork のサインイン URL (https://www.chatwork.com/login.php
) を入力して保存します。
[ ユーザーとグループ ] で特定ユーザにアクセス権を割り当て、 SSO を許可します。
マイアプリにアクセスし、Chatwork ( Free )
をクリックします。
Chatwork の資格情報(登録メールアドレス・パスワード)を入力して [ サインイン ] をクリックします。 資格情報の入力は初回サインイン時のみで、次回以降は求められません。
Chatwork のサインイン画面に遷移し、資格情報が自動入力されてサインイン処理が実行されました。
・・・が、 CAPTCHA が原因で失敗。資格情報が入力された状態で「私はロボットではありません。」にチェックし [ ログイン ] ボタンをクリックするとサインインに成功しました。
[ マイアプリ ] からではなく、 Chatwork のログイン画面に直接アクセスすると、画面上部に You Have a saved password for this site.
と表示され、パスワードベースの SSO が設定済みのアプリケーションであることが識別できます。が、数秒で表示が消えてしまうので気を抜いていると見逃してしまいそうです。。
My Apps Secure Sign-in Extension のアイコンをクリックすると、パスワードベースの SSO を設定済みのアプリケーションが表示されます。 Chatwork ( Free ) をクリックすると、 [ マイアプリ ] でChatwork ( Free ) をクリックした場合と同様の処理が行われました。
Fiddler で通信内容を覗いてみると、 Azure AD 関連と思われる FQDN との通信や、Chatwork にメールアドレス・パスワードを POST してログインを試みている動きが確認できました。
資格情報の変更
アプリケーション側でパスワードを変更した場合に Azure AD へ記憶させた資格情報を変更する必要がありますが、変更は Azure のポータル画面で操作するしかないようです。( Microsoft サポートにも確認済み)
前提条件
Azure AD テナントのアプリケーションのプロパティを構成するには、次のものが必要です。
...
次のいずれかのロール: グローバル管理者、クラウド アプリケーション管理者、アプリケーション管理者、またはサービス プリンシパルの所有者。クイック スタート:Azure Active Directory (Azure AD) テナントのアプリケーションのプロパティを構成する | Microsoft Docs
Azure ポータル上で、対象アプリの [ ユーザとグループ ] - [ 資格情報の更新 ] をクリックして資格情報を更新します。
「ユーザの代わりに資格情報を入力します」と表示されているように、一般ユーザ(非管理者)でのパスワード変更操作は想定されていないようです。
またアプリの割り当てをグループ単位で設定した場合には、当該グループの参加メンバー間で同一の資格情報を共有するようです。(実際での確認はしていません。)
条件付きアクセス
パスワードベースの SSO でも条件付きアクセスは機能しました。
画像は [ 条件付きアクセス ] で [ アクセスのブロック ] ポリシーに合致した場合の表示です。
認証のログ
SAML での SSO はサインインのログが記録されますが、パスワードペースでの SSO では記録されませんでした。(他のアプリケーションでも試したのですが、やはりサインインのログは記録されず。)
もし記録されるのであれば、アプリケーションの管理アカウントの資格情報を管理者間で共有しつつ、使用者の特定もできるかな、と思ったのですが。。
まとめ
パスワードベースの SSO は、記憶させたアプリケーションの資格情報をユーザ(非管理者)自身で変更することができないため、実運用で展開するのは難しいと思います。「全員が管理者だぜ!」なフェーズでの利用であったり、パスワードマネージャの利便性を体験してみる用途であれば手軽に使えてよいかもしれません。
一方で、先日 Microsoft Authenticator のパスワードマネージャ機能がプレビュー版が公開されました。 Web ブラウザの拡張機能も提供され、資格情報の自動入力や MFA にも対応しているようです。本記事を書いている 2021/01/23 時点では Microsoft アカウント(一般コンシューマ向け)でのみ利用可能ですが、これが Azure AD アカウントで利用可能になるとかなり嬉しいですね!
Microsoft Authenticator アプリに関してよく寄せられる質問 (FAQ) - コンシューマー向けのオートフィル
と思っていたらこちらのフォームから Azure AD アカウントでの利用が申し込めたので、早速申請してみました。設定が反映されたら動作を確認してみます。