NPS で正規表現を使用する
このトピックでは、Windows Server の NPS でパターン マッチングに正規表現を使用する方法について説明します。 この構文を使用し、ネットワーク ポリシー属性および RADIUS 領域の条件を指定できます。
注意
NPS コンソールと NPS MMC スナップインには、文字列値を受け取るすべての設定に対して 256 文字の制限があります。 これには、正規表現を使用して構成できるすべての設定が含まれます。 256 文字を超える文字列値を構成するには、NETSH NPS コマンドを使用します。 256 文字を超える構成済みの文字列値は、それらを無効にせずに NPS コンソールまたは NPS MMC スナップインで編集することはできません。
パターン マッチングの参照情報
次の表は、パターン マッチング構文を使用した正規表現を作成する際の参照情報として活用できます。 正規表現のパターンの多くが、スラッシュ (/) で囲まれている点に注意してください。
文字 | 説明 | 例 |
---|---|---|
\ |
後に続く文字が特殊文字であるか、リテラルとして解釈する必要があることを示します。 | /n/ matches the character "n" while the sequence /\n/ matches a line feed or newline character. |
^ |
入力または行の最初と一致します。 | |
$ |
入力または行の末尾と一致します。 | |
* |
直前の文字の 0 回または複数回の繰り返しと一致します。 | /zo*/ matches either "z" or "zoo." |
+ |
直前の文字の 1 回以上の繰り返しと一致します。 | /zo+/ matches "zoo" but not "z." |
? |
直前の文字が 0 回または 1 回出現する文字と一致します。 | /a?ve?/ matches the "ve" in "never." |
. |
復帰改行文字以外の任意の 1 文字と一致します。 | |
(pattern) |
"パターン" に指定した文字列と一致し、一致した文字列が記憶されます。 リテラル文字 ( および ) (かっこ) と一致させるには、\( または \) を使用します。 |
|
x | y |
X または Y と一致します。 | |
{n} |
正確に n 回の繰り返しと一致します (n は負ではない整数)。 | /o{2}/ does not match the "o" in "Bob," but matches the first two instances of the letter o in "foooood." |
{n,} |
n 回以上の繰り返しと一致します (n は負ではない整数)。 | /o{2,}/ does not match the "o" in "Bob" but matches all of the instances of the letter o in "foooood." /o{1,}/ is equivalent to /o+/. |
{n,m} |
n 回以上 m 回以下の繰り返しと一致します (m と n は負ではない整数)。 | /o{1,3}/ matches the first three instances of the letter o in "fooooood." |
[xyz] |
角かっこで囲まれた文字 (文字セット) のうちのいずれかと一致します。 | /[abc]/ matches the "a" in "plain." |
[^xyz] |
角かっこで囲まれている文字 (打ち消しの文字セット) 以外の任意の文字と一致します。 | /[^abc]/ matches the "p" in "plain." |
\b |
単語の境界 (スペースなど) と一致します。 | /ea*r\b/ matches the "er" in "never early." |
\B |
単語以外の境界と一致します。 | /ea*r\B/ matches the "ear" in "never early." |
\d |
数字と一致します (0 から 9 の数字と同等)。 | |
\D |
数字以外の文字と一致します ([^0-9] と同じ)。 |
|
\f |
フォーム フィード文字と一致します。 | |
\n |
改行文字と一致します。 | |
\r |
復帰文字と一致します。 | |
\s |
スペース、タブ、フォーム フィードなどを含む任意の空白文字と一致します ([ \f\n\r\t\v] と同じ)。 |
|
\S |
空白文字以外の任意の文字と一致します ([^ \f\n\r\t\v] と同じ)。 |
|
\t |
タブ文字と一致します。 | |
\v |
垂直タブ文字と一致します。 | |
\w |
アンダースコアを含む任意の単語文字と一致します ([A-Za-z0-9_] と同じ)。 |
|
\W |
アンダースコアを除く、任意の単語以外の文字と一致します ([^A-Za-z0-9_] と同じ)。 |
|
\num |
記憶されている一致文字列を参照します (?num の場合、num には正の整数を指定)。 このオプションは、属性の操作を構成しているときに [置換] テキスト ボックスの中でのみ使用できます。 |
\1 を指定した場合、最初に記憶された一致文字列に格納されている内容を置き換えます。 |
/n/ |
ASCII コードを正規表現に挿入できるようにします (?n の場合、n には 8 進数、16 進数、または 10 進数のエスケープ文字を指定)。 |
ネットワーク ポリシー属性の例
次に、パターン マッチング構文を使用してネットワーク ポリシー属性を指定する方法の例を説明します。
市外局番が 899 の電話番号をすべて指定するには、次の構文を使用します。
899.*
192.168.1 から始まる IP アドレスの範囲を指定するには、次の構文を使用します。
192\.168\.1\..+
ユーザー名 属性で領域名を扱う例
注意
領域の操作は PEAP では機能しません。
必要な動作を実現するには、認証のために EAP-TLS または EAP-MSCHAPv2 に切り替えるか、または解決する必要がある追加のドメイン名ごとに UPN サフィックスをドメインに追加します。
次の例では、パターン マッチング構文を使用し、接続要求ポリシーのプロパティの [属性] タブにある [ユーザー名] 属性で領域名を扱う方法を説明します。
[ユーザー名] 属性の領域部分を削除するには
ダイヤルアップがアウトソーシングされるシナリオで、組織の NPS への接続要求がインターネット サービス プロバイダー (ISP) を経由して送信される場合、認証要求のルーティングのために ISP RADIUS プロキシで領域名が必要となることがあります。 ただし、NPS では、ユーザー名の領域名部分が認識されない可能性があります。 そのため、ISP RADIUS プロキシで領域名を削除してから、ユーザー名が組織の NPS に転送される必要があります。
検索文字列: @microsoft\.com
置換前のコード:
user@example.microsoft.com を example.microsoft.com\user に置換するには
検索文字列:
(.*)@(.*)
置換文字列:
$2\$1
domain\user を specific_domain\user に置換するには
検索文字列:
(.*)\\(.*)
置換文字列: specific_domain
\$2
user を user@specific_domain に置換するには
検索文字列:
$
置換文字列: @specific_domain
プロキシ サーバーによる RADIUS メッセージの転送の例
NPS を RADIUS プロキシとして使用している場合、一連の RADIUS サーバーに対して指定した領域名を使い、RADIUS メッセージを転送するルーティング規則を作成できます。 次に、領域名に基づいて要求をルーティングするために推奨される構文を挙げます。
- NetBIOS 名:
WCOAST
- パターン:
^wcoast\\
次の例では、wcoast.microsoft.com は、DNS または Active Directory ドメイン wcoast.microsoft.com の一意のユーザー プリンシパル名 (UPN) サフィックスです。 指定されたパターンを使用して、NPS プロキシでは、ドメインの NetBIOS 名または UPN サフィックスに基づいてメッセージをルーティングできます。
- NetBIOS 名:
WCOAST
- UPN サフィックス:
wcoast.microsoft.com
- パターン:
^wcoast\\|@wcoast\.microsoft\.com$
NPS の管理に関する詳細については、ネットワーク ポリシー サーバーの管理に関するページを参照してください。
NPS の詳細については、ネットワーク ポリシー サーバー (NPS) に関するページを参照してください。