7
5
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

[Entra ID] パスワードベースのSSOを検証する

Last updated at Posted at 2024-01-04

はじめに

情シスとしては、社員が使うアプリケーションはSSOにしたいですよね。パスワードは極力利用させず、認証はSAMLやOIDCでSSOを構成し、IdPに集約させたいです。とはいえ、やはりレガシーなアプリケーションがありパスワード認証から変えられなかったり、SSOを利用できるプランにアップグレードするにはコスト面で問題があったり。理想と現実には常にギャップがありますよね。

Entra ID パスワードベースのSSO

Entra IDにはSAMLでのSSOなどの他に、パスワードベースのSSOという機能があります。ブラウザにアドオンを入れることで、パスワードを自動入力してくれるものです。パスワードはEntra ID側で事前入力しておくことができます。この機能をうまく使えれば、疑似的なパスワードレスを実装することができます。

ドキュメントはこちら

パスワードによるSSO選択する局面

ドキュメントによると、次の場合にパスワードベースの SSO を選択するとよさそうです。

  • SAML SSO プロトコルがアプリケーションでサポートされていない
  • アプリケーションは、アクセス トークンとヘッダーではなく、ユーザー名とパスワードを使用して認証する

前提条件

テナントでパスワードベース SSO を構成するには、次のものが必要です。

  • アクティブなサブスクリプションが含まれる Azure アカウント。 まだアカウントがない場合は、無料でアカウントを作成することができます
  • 全体管理者、クラウド アプリケーション管理者、アプリケーション管理者、またはサービス プリンシパルの所有者
  • パスワードベースの SSO をサポートするアプリケーション

Edgeのアドオンをインストール

パスワードベースのSSOを構成する場合はブラウザにアドオンをいれる必要があります。以下のURLよりMy Apps Secure Sign-in Extensionをインストールしてください。

実装

今回は本ブログを公開しているQiitaに対してログインする際にパスワードを入力しなくても済むようにしたいです。

検証用のアカウントを作成します。アカウント作成後、ログインページのURLをメモしておきます。

image.png

アカウントを作成したら、Entra IDの管理画面で、エンタープライズアプリケーションを選択し、新規から独自のApplicationの作成に進み、Qiitaという名前(任意)でアプリケーションを作成します。

image.png

エンタープライズアプリケーションを作成したら、左側のメニューからシングルサインオンを選択。

image.png

パスワードベースを選択。

image.png

次の画面で、ログインURLに先ほどメモしておいたQiitaのログインページURLを貼り付けます。

image.png

自動構成

URLを入れて確定すると、ログインURLのページを解析してくれて、IDとパスワードを入力する場所を特定してくれます。IDやパスワード入力部分のHTMLは以下の通り。この辺を解析して判定してくれている模様。

ID.html
<input type="text" name="identity" id="identity" placeholder="ユーザー名 または メールアドレス" autofocus="autofocus" class="st-Form_text-round" required="required">
PASS.html
<input type="password" name="password" id="password" placeholder="パスワード" class="st-Form_text-round" required="required">

image.png

image.png

手動

QiitaのログインページはHTMLがしっかりしているため自動解析もうまく動きましたが、そうでない場合は手動構成もできます。

「サインインフィールドを手動検出」 にするとさきほど指定したログインURLに自動遷移します。

image.png

ここでIDやPASSを入力すると、赤枠で囲まれます。入力した部分を入力場所として検知してくれます。

image.png

image.png

ユーザーやグループを設定

このエンタープライズアプリケーションを利用するユーザーやグループを設定します。「資格情報の更新」 を押すと、ユーザーごとにIDとパスワードを入力できます。ユーザーごとにIDやパスワードを入力することもできますし、グループを使えば、全員一律同じIDやパスワードを割り振ることも可能です。

image.png

さてここまでで、設定作業は終わりです。

動作検証

通常のURLからアクセスしても、パスワードベースのSSOは機能しません。
マイアプリポータルからアクセスします。マイアプリポータルは、エンタープライズアプリケーションで割り当てられているアプリケーションが表示されているはずです。
リンクはコピーできるので、ブックマークも可能です。Edgeのアドオンから行くこともできます。おすすめはEdgeのサイドバーにピン止めしておくことです。

マイアプリポータルはこちら↓

image.png

Entra 管理ポータルのエンタープライズアプリケーション→プロパティからも同じリンクを取り出すことができます。ユーザーはマイアプリポータルに慣れていない場合は管理者側からこのURLを教えてあげましょう。

image.png

PCでの動作動画

マイアプリポータルからリンクをクリックしたあとの動画です。早くてわかりにくいですが、自動的にパスワードが入力されていることがわかります。

パスワードベースのSSO.gif

iPhoneでの動作動画

モバイルでも動きます。そう、Edgeならね😁
私の環境では、Edgeでは動作しましたが、Chrome、Safariでは動きませんでした。Edgeはネイティブに対応しているということみたいですね。

2024-01-05_18-07-28.gif

考察🤔

SAMLを利用したSSOにどうしてもできないときの最後の手段…とはいえ、ユーザー数が1000名いて、個別にユーザーIDとパスワードを管理者が設定してあげるのは運用上厳しいかもしれない。APIとLogic Appsを使えば自動化できるのかな。調べないと。ユーザー数が10名前後とか、パスワードひとつで使いまわしているようなシステムに対して最適なのかなと思いました。パスワードマネージャーを導入すると一人月額1000円程度はかかっちゃうとおもうので、コストと運用負荷のバランスですね。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5