Microsoft Entra シームレス シングル サインオン: 技術的な詳細

この記事では、Microsoft Entra シームレス シングル サインオン (シームレス SSO) 機能の技術的なしくみについて説明します。

シームレス SSO のしくみ

このセクションは、3 つの部分に分かれています。

  1. シームレス SSO 機能の設定。
  2. Web ブラウザーでの 1 人のユーザーのシングル サインイン トランザクションのシームレス SSO での動作。
  3. ネイティブ クライアントでの 1 人のユーザーのシングル サインイン トランザクションのシームレス SSO での動作。

設定のしくみ

シームレス SSO は、こちらで示す通り、Microsoft Entra Connect を使用して有効にできます。 この機能を有効にすると、次の手順が発生します。

  • (Microsoft Entra Connect を使用して) Microsoft Entra ID と同期する各 AD フォレストのオンプレミス Active Directory (AD) にコンピューター アカウント (AZUREADSSOACC) が作成されます。
  • また、Microsoft Entra のサインイン プロセス中に使用される多数の Kerberos サービス プリンシパル名 (SPN) が作成されます。
  • コンピューター アカウントの Kerberos の復号化キーは、Microsoft Entra ID と安全に共有されます。 複数の AD フォレストがある場合は、各コンピューター アカウントに、固有の Kerberos 復号化キーが割り当てられます。

重要

AZUREADSSOACC コンピューター アカウントは、セキュリティ上の理由から強固に保護する必要があります。 ドメイン管理者だけがこのコンピューター アカウントを管理できるようにしてください。 コンピューター アカウント上で Kerberos 委任が無効になっていること、および Active Directory 内の他のどのアカウントにも、AZUREADSSOACC コンピューター アカウント上の委任のアクセス許可がないことを確認してください。 このコンピューター アカウントは、不注意で削除されるおそれがなく、ドメイン管理者のみがアクセスできる組織単位 (OU) に格納してください。 このコンピューター アカウントの Kerberos の復号化キーも機密として扱う必要があります。 少なくとも 30 日ごとに、AZUREADSSOACC コンピューター アカウントの Kerberos の復号化キーをロールオーバーすることを強くお勧めします。

重要

Seamless SSO では、Kerberos の暗号化タイプとして AES256_HMAC_SHA1AES128_HMAC_SHA1RC4_HMAC_MD5 がサポートされます。 AzureADSSOAcc$ アカウントの暗号化の種類を AES256_HMAC_SHA1 に設定するか、AES タイプまたは RC4 のいずれかに設定してセキュリティを強化することをお勧めします。 暗号化の種類は、Active Directory 内のアカウントの属性の msDS-SupportedEncryptionTypes 属性に格納されます。 AzureADSSOAcc$ アカウントの暗号化の種類が RC4_HMAC_MD5 に設定されていて、それを AES 暗号化の種類のいずれかに変更する場合は、FAQ ドキュメントの関連する質問に説明されているように、まず AzureADSSOAcc$ アカウントの Kerberos 復号化キーをロールオーバーするようにしてください。そうしないと、シームレス SSO は行われません。

このセットアップが完了すると、シームレス SSO は、統合 Windows 認証 (IWA) を使用するその他のサインインと同様に機能します。

Web ブラウザーでのシームレス SSO によるサインインのしくみ

Web ブラウザーでのサインインのフローは次のとおりです。

  1. ユーザーは、web のアプリケーション(たとえば、outlook Web アプリケーション - https://outlook.office365.com/owa/) に、 企業ネットワーク内のドメインに参加している、会社のデバイスからアクセスしようとします。

  2. まだサインインしていない場合、ユーザーは、Microsoft Entra のサインイン ページにリダイレクトされます。

  3. ユーザーが、Microsoft Entra サインイン ページにユーザー名を入力します。

    Note

    特定のアプリケーションでは、手順 2. と 3. をスキップします。

  4. Microsoft Entra ID が JavaScript をバックグラウンドで使用して、Kerberos チケットを提供するよう、401 認証エラーを通じてクライアントに要求します。

  5. ブラウザーは、代わりに Active Directory から (Microsoft Entra ID を表す) AZUREADSSOACC コンピューター アカウント用にチケットを要求します。

  6. Active Directory がコンピューター アカウントを検索し、コンピューター アカウントのシークレットで暗号化された Kerberos チケットをブラウザーに返します。

  7. ブラウザーは、Active Directory から取得した Kerberos チケットを Microsoft Entra ID に転送します。

  8. Microsoft Entra ID が、会社のデバイスにサインインしているユーザーの ID を含む Kerberos チケットを以前に共有していたキーを使用して解読します。

  9. 評価後、Microsoft Entra ID はアプリケーションにトークンを返すか、多要素認証などの他の検査を実行するようユーザーに要求します。

  10. ユーザーのサインインが成功すると、アプリケーションにアクセスできるようになります。

次の図に、すべてのコンポーネントと必要な手順を示します。

Seamless Single Sign On - Web app flow

シームレス SSO は便宜的であり、何らかの理由で失敗した場合、サインイン エクスペリエンスはその通常の動作に戻ります。つまり、ユーザーはサインインするためにパスワードを入力する必要があります。

ネイティブ クライアントでのシームレス SSO によるサインインのしくみ

ネイティブ クライアントでのサインインのフローは次のとおりです。

  1. ユーザーは、(Outlook クライアントなどの) ネイティブ アプリケーションに企業ネットワーク内のドメインに参加している会社のデバイスからアクセスします。
  2. ユーザーがまだサインインしていない場合は、ネイティブ アプリケーションが、デバイスの Windows セッションからそのユーザーのユーザー名を取得します。
  3. アプリが、Microsoft Entra ID にユーザー名を送信し、テナントの WS-Trust MEX エンドポイントを取得します。 この WS-Trust エンドポイントは、シームレス SSO 機能によって排他的に使用されるもので、Microsoft Entra ID 上の WS-Trust プロトコルの一般的な実装ではありません。
  4. 次にアプリは、統合認証エンドポイントが使用可能かどうかを確認するために、WS-Trust MEX エンドポイントにクエリを実行します。 統合認証エンドポイントは、シームレス SSO 機能によって排他的に使用されます。
  5. 手順 4. が成功した場合は、Kerberos チャレンジが発行されます。
  6. アプリが Kerberos チケットを取得できる場合は、Microsoft Entra の統合認証エンドポイントにそのチケットを転送します。
  7. Microsoft Entra ID が、Kerberos チケットを復号化して検証します。
  8. Microsoft Entra ID は、ユーザーをサインインさせ、アプリに SAML トークンを発行します。
  9. アプリは、Microsoft Entra ID の OAuth2 トークン エンドポイントに SAML トークンを送信します。
  10. Microsoft Entra ID は SAML トークンを検証し、指定されたリソースのアクセス トークンおよび更新トークンと、ID トークンをアプリに発行します。
  11. ユーザーは、アプリのリソースにアクセスできます。

次の図に、すべてのコンポーネントと必要な手順を示します。

Seamless Single Sign On - Native app flow

次のステップ