Office 365サインオンポリシーでカスタムクライアントを許可または拒否する

userAgent属性の使用

Office 365アプリのサインオンルールで特定のクライアントをフィルタリングし、Office 365リソースへのアクセスを許可または拒否することができます。このフィルターは、対応または信頼していない特定のクライアントへのアクセスを拒否する必要がある場合に、特に便利です。また、このフィルターを使用して、信頼できるクライアントのみを許可することもできます。これにより、Office 365アプリへのアクセス権を持つクライアントをより詳細に制御できます。

注

カスタムクライアントをフィルタリングするためのサインオンルールは、Okta ClassicからOkta OIEに移行されません。Office 365アプリインスタンスをOkta OIEに移行する場合は、これらのルールを再作成する必要があります。

ベストプラクティス

Oktaのサインオンポリシーでは、ユーザーのブラウザーから送信されるUser-Agentリクエストヘッダーに含まれる情報が評価されます。ただし、User-Agentは悪意のあるアクターによるなりすましが可能です。これを回避するために、Oktaでは以下の実践をお勧めします。

  • サインオンポリシーの作成時に、信頼できるクライアントのみを許可する。
  • アプリへのアクセスを許可するクライアントタイプ、デバイスプラットフォーム、信頼の組み合わせを指定する、1つまたは複数のルールを作成する。
  • アプリへのアクセスに、Device Trustまたは多要素認証を要求します。<MadCap:conditionalText data-mc-conditions="MultiProdPublish.OIE">See Devices and Multifactor Authentication.</MadCap:conditionalText>

この手順を開始する

Office 365アプリで、

  1. [Sign On(サインオン)]タブに移動します。[User authentication(ユーザー認証)]>[Authentication policy(認証ポリシー)]で、[View policy details(ポリシーの詳細を表示)]をクリックします(または、[Security(セキュリティ)]>[Authentication Policies(認証ポリシー)]>[Microsoft Office 365]>[Add rule(ルールを追加)]に移動して、これにアクセスできます)。
  2. [App Rule(アプリのルール)]ウィンドウがポップアップ表示されます。
  3. [If]セクション >[The following custom expression is true(次のカスタム式をtrueとする)]に移動します。
  4. Okta式言語を使用してカスタム式を入力し、クライアントを許可または拒否します。以下の良い例と悪い例を確認してください。

  5. 必要に応じて他のセクションを完了し、[Save(保存)]をクリックします。「Office 365サインオンルールのオプション」を参照してください。
  6. 「Custom(サインオンポリシー)」セクションに戻り、このルールを適切な優先度レベルに位置付けします。Oktaで各ルールを優先度に従って評価し、最初に一致したルールを適用します。
  7. アクセスを許可または拒否するそれぞれのカスタムクライアントに対して、ステップ1〜5を繰り返します。

このルールにより、指定されたクライアントをフィルタリングして、ルールで定義された他の条件とアクションを適用し、Office 365へのアクセスを許可または拒否できるようになります。

カスタム式の良い例と悪い例をいくつか紹介します。

注

Okta式言語の文字列操作では、大文字と小文字が区別されます。大文字と小文字を区別しない条件を書き込むには、比較の前にユーザーエージェントの値を大文字または小文字に変換します。

良い例

機能
request.userAgent.contains("WinWord") WinWordを含むユーザーエージェントのリクエストをフィルタリングします。
request.userAgent.toLowerCase().contains("winword") リクエストを小文字に変換してから、winwordを含むユーザーエージェントをフィルタリングします。
request.userAgent.toUpperCase().contains("WINWORD") リクエストを大文字に変換してから、WINWORDを含むユーザーエージェントをフィルタリングします。
request.userAgent.contains("WinWord") OR request.userAgent.contains("Windows-AzureAD-Authentication-Provider") WinWordまたはWindows-AzureAD-Authentication-Providerを含むユーザーエージェントのリクエストをフィルタリングします。
request.userAgent.contains("compatible;") AND request.userAgent.contains("MSIE 7") compatibleおよびMSIE 7を含むユーザーエージェントのリクエストをフィルタリングします。

悪い例

機能
request.userAgent.contains("") すべてのリクエストに一致しています。
request.userAgent.contains() 式が無効です。

関連項目