Usare espressioni regolari in NPS

Si applica a: Windows Server 2022, Windows Server 2019, Windows Server 2016

In questo argomento, viene illustrato l'uso di espressioni regolari per la corrispondenza dei criteri di rete in NPS in Windows Server. È possibile usare questa sintassi per specificare le condizioni degli attributi dei criteri di rete e delle aree di autenticazione RADIUS.

Nota

La console NPS e lo snap-in MMC NPS hanno un limite di 256 caratteri per tutte le impostazioni che accettano un valore stringa. Questo include tutte le impostazioni che possono essere configurate usando espressioni regolari. Per configurare valori stringa che superano i 256 caratteri, usare i comandi NPS NETSH. I valori di stringa configurati che superano i 256 caratteri non possono essere modificati nella console dei criteri di rete o nello snap-in MMC NPS senza invalidarli.

Riferimento per criteri di ricerca

È possibile usare la tabella seguente come origine di riferimento durante la creazione di espressioni regolari con sintassi di criteri di ricerca. Si noti che i modelli di espressione regolare sono spesso circondati da barre (/).

Carattere Descrizione Esempio
\ Indica che il carattere che segue è un carattere speciale o deve essere interpretato letteralmente. /n/ matches the character "n" while the sequence /\n/ matches a line feed or newline character.
^ Corrisponde all'inizio dell'input o della riga.  
$ Corrisponde alla fine dell'input o della riga.  
* Trova la corrispondenza del carattere precedente zero o più volte. /zo*/ matches either "z" or "zoo."
+ Trova la corrispondenza del carattere precedente una o più volte. /zo+/ matches "zoo" but not "z."
? Trova la corrispondenza del carattere precedente zero o una volta. /a?ve?/ matches the "ve" in "never."
. Trova la corrispondenza di qualsiasi carattere, ad eccezione del carattere nuova riga.  
(pattern) Trova la corrispondenza con "pattern" e memorizza la corrispondenza.
Per trovare la corrispondenza con i caratteri letterali ( e ) le parentesi, usare \( o \).
 
x | y Trova una corrispondenza a x o y.
{n} Trova una corrispondenza esatta n volte (n è un numero intero non negativo). /o{2}/ does not match the "o" in "Bob," but matches the first two instances of the letter o in "foooood."
{n,} Trova una corrispondenza almeno n volte (n è un numero intero non negativo). /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} Trova una corrispondenza almeno n e al massimo m volte (m e n sono numeri interi non negativi). /o{1,3}/ matches the first three instances of the letter o in "fooooood."
[xyz] Trova una corrispondenza con uno qualsiasi dei caratteri allegati (serie di caratteri). /[abc]/ matches the "a" in "plain."
[^xyz] Trova una corrispondenza con tutti i caratteri non racchiusi (un set di caratteri negativi). /[^abc]/ matches the "p" in "plain."
\b Trova una corrispondenza con un limite di parola, ad esempio uno spazio. /ea*r\b/ matches the "er" in "never early."
\B Trova una corrispondenza con un limite non parola. /ea*r\B/ matches the "ear" in "never early."
\d Trova una corrispondenza con un carattere di cifra (equivalente alle cifre da 0 a 9).  
\D Trova una corrispondenza di un carattere nondigit (equivalente a [^0-9]).  
\f Trova una corrispondenza di un carattere di avanzamento carta.  
\n Trova una corrispondenza con un carattere di avanzamento riga.  
\r Trova una corrispondenza di un carattere di ritorno a capo.  
\s Trova una corrispondenza con qualsiasi carattere di spazio vuoto, inclusi spazi, tabulazioni e feed di moduli (equivalente a [ \f\n\r\t\v]).  
\S Trova una corrispondenza con qualsiasi carattere diverso da spazio (equivalente a [^ \f\n\r\t\v]).  
\t Corrisponde a un carattere della scheda.  
\v Trova una corrispondenza a un carattere della scheda verticale.  
\w Trova una corrispondenza con qualsiasi carattere di parola, incluso il carattere di sottolineatura (equivalente a [A-Za-z0-9_]).  
\W Trova una corrispondenza con qualsiasi carattere diverso da una parola, escluso il carattere di sottolineatura (equivalente a [^A-Za-z0-9_]).  
\num Fa riferimento alle corrispondenze memorizzate (?num, dove num è un numero intero positivo). Questa opzione può essere usata solo nella casella di testo Sostituisci durante la configurazione della manipolazione degli attributi. \1 sostituisce ciò che viene archiviato nella prima corrispondenza memorizzata.
/n/ Consente l'inserimento di codici ASCII in espressioni regolari (?n, dove n è un valore di escape ottale, esadecimale o decimale).  

Esempi di attributi dei criteri di rete

Gli esempi seguenti descrivono l'uso della sintassi di criteri di ricerca per specificare gli attributi dei criteri di rete:

  • Per specificare tutti i numeri di telefono all'interno del codice di area 899, la sintassi è:

    899.*

  • Per specificare un intervallo di indirizzi IP che iniziano con 192.168.1, la sintassi è:

    192\.168\.1\..+

Esempi di manipolazione del nome dell'area di autenticazione nell'attributo Nome utente

Nota

La manipolazione dell'area di autenticazione non funziona con PEAP.
Il comportamento desiderato può essere eseguito passando a EAP-TLS o EAP-MSCHAPv2 per l'autenticazione o aggiungendo un suffisso UPN al dominio per ogni nome di dominio aggiuntivo che è necessario risolvere.

Negli esempi seguenti viene descritto l'uso della sintassi di criteri di ricerca per modificare i nomi dell'area di autenticazione per l'attributo Nome utente, che si trova nella scheda Attributo nelle proprietà di un criterio di richiesta di connessione.

Per rimuovere la parte dell'area di autenticazione dell'attributo User Name

In uno scenario di connessione remota in uscita in cui un provider di servizi Internet (ISP) instrada le richieste di connessione a un'organizzazione NPS, il proxy RADIUS ISP potrebbe richiedere un nome dell'area di autenticazione per instradare la richiesta di autenticazione. Tuttavia, NPS potrebbe non riconoscere la parte del nome dell'area di autenticazione del nome utente. Pertanto, il nome dell'area di autenticazione deve essere rimosso dal proxy RADIUS ISP prima che venga inoltrato all'NPS dell'organizzazione.

  • Find: @microsoft\.com

  • Sostituzione:

Per sostituire user@example.microsoft.com con example.microsoft.com\user

  • Find:(.*)@(.*)

  • Replace:$2\$1

Per sostituire domain\user con specific_domain\user

  • Find:(.*)\\(.*)

  • Sostituire: specific_domain\$2

Per sostituire utente con user@specific_domain

  • Find:$

  • Sostituire: @specific_domain

Esempio per l'inoltro di messaggi RADIUS da un server proxy

È possibile creare regole di routing che inoltrano messaggi RADIUS con un nome di area di autenticazione specificato a un set di server RADIUS quando Server dei criteri di rete viene usato come proxy RADIUS. Di seguito è riportata una sintassi consigliata per il routing delle richieste in base al nome dell'area di autenticazione.

  • NetBIOS name: WCOAST
  • Pattern: ^wcoast\\

Nell'esempio seguente wcoast.microsoft.com è un suffisso UPN (User Principal Name) univoco per il dominio DNS o Active Directory wcoast.microsoft.com. Usando il modello fornito, il proxy NPS può instradare i messaggi in base al nome NetBIOS di dominio o al suffisso UPN.

  • NetBIOS name: WCOAST
  • UPN suffix: wcoast.microsoft.com
  • Pattern: ^wcoast\\|@wcoast\.microsoft\.com$

Per maggiori informazioni sulla gestione di NPS, consultare la sezione Gestione server dei criteri di rete.

Per maggiori informazioni su NPS, consultare la sezione Server dei criteri di rete (NPS).