The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. Learn more about how Cisco is using Inclusive Language.
This document explains how to configure the wireless LAN controller (WLC) for Extensible Authentication Protocol (EAP) - Flexible Authentication via Secure Tunneling (FAST) authentication with the use of an external RADIUS server. This configuration example uses the Identity Services Engine (ISE) as the external RADIUS server to authenticate the wireless client.
This document focuses on how to configure the ISE for Anonymous and Authenticated In-Band (Automatic) Protected Access Credentials (PAC) provisioning to the wireless clients.
Ensure that you meet these requirements before you attempt this configuration:
Basic knowledge of the configuration of lightweight access points (LAPs) and Cisco WLCs
Basic knowledge of CAPWAP protocol
Knowledge of how to configure an external RADIUS server, such as the Cisco ISE
Functional knowledge on general EAP framework
Basic knowledge on security protocols, such as MS-CHAPv2 and EAP-GTC, and knowledge on digital certificates
The information in this document is based on these software and hardware versions:
Cisco 5520 Series WLC that runs firmware release 8.8.111.0
Cisco 4800 Series AP
Anyconnect NAM.
Cisco Secure ISE version 2.3.0.298
Cisco 3560-CX Series Switch that runs version 15.2(4)E1
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Refer to the Cisco Technical Tips Conventions for more information on document conventions.
The EAP-FAST protocol is a publicly accessible IEEE 802.1X EAP type that Cisco developed to support customers that cannot enforce a strong password policy and want to deploy an 802.1X EAP type that does not require digital certificates.
The EAP-FAST protocol is a client-server security architecture that encrypts EAP transactions with a Transport Level Security (TLS) tunnel. EAP-FAST tunnel establishment is based on strong secrets that are unique to users. These strong secrets are called PACs, which the ISE generates by using a master key known only to the ISE.
EAP-FAST occurs in three phases:
Phase zero (Automatic PAC provisioning phase)—EAP-FAST phase zero, an optional phase is a tunnel-secured means of providing an EAP-FAST end-user client with a PAC for the user requesting network access. Providing a PAC to the end-user client is the sole purpose of phase zero.
Note: Phase zero is optional because PACs can also be manually provisioned to clients instead of using phase zero.
See the PAC Provisioning Modes section of this document for details.
Phase one—In phase one, the ISE and the end-user client establish a TLS tunnel based on the user's PAC credential. This phase requires that the end-user client has been provided a PAC for the user who is attempting to gain network access, and that the PAC is based on a master key that has not expired. No network service is enabled by phase one of EAP-FAST.
Phase two—In phase two, user authentication credentials are passed securely using an inner EAP method supported by EAP-FAST within the TLS tunnel to the RADIUS created using the PAC between the client and RADIUS server. EAP-GTC, TLS and MS-CHAP are supported as inner EAP methods. No other EAP types are supported for EAP-FAST.
Refer to How EAP-FAST works for more information.
PACs are strong shared secrets that enable the ISE and an EAP-FAST end-user client to authenticate each other and establish a TLS tunnel for use in EAP-FAST phase two. The ISE generates PACs by using the active master key and a username.
PAC comprises:
PAC-Key—Shared secret bound to a client (and client device) and server identity.
PAC Opaque—Opaque field that the client caches and passes to the server. The server recovers the PAC-Key and the client identity to mutually authenticate with the client.
PAC-Info—At a minimum, includes the server's identity to enable the client to cache different PACs. Optionally, it includes other information such as the PAC's expiration time.
As mentioned earlier, phase zero is an optional phase.
EAP-FAST offers two options to provision a client with a PAC:
Automatic PAC provisioning (EAP-FAST Phase 0, or In-band PAC provisioning)
Manual (Out-of-band) PAC provisioning
In-band/Automatic PAC provisioning sends a new PAC to an end-user client over a secured network connection. Automatic PAC provisioning requires no intervention of the network user or an ISE administrator, provided that you configure the ISE and the end-user client to support automatic provisioning.
The latest EAP-FAST version supports two different in-band PAC provisioning configuration options:
Anonymous In-band PAC provisioning
Authenticated In-band PAC provisioning
Note: This document discusses these in-band PAC provisioning methods and how to configure them.
Out-of-band/Manual PAC provisioning requires an ISE administrator to generate PAC files, which must then be distributed to the applicable network users. Users must configure end-user clients with their PAC files.
Perform these steps in order to configure the WLC for EAP-FAST authentication:
Configure the WLC for RADIUS Authentication through an External RADIUS Server
Configure the WLAN for EAP-FAST Authentication
The WLC needs to be configured in order to forward the user credentials to an external RADIUS server. The external RADIUS server then validates the user credentials using EAP-FAST and provides access to the wireless clients.
Complete these steps in order to configure the WLC for an external RADIUS server:
Choose Security and RADIUS Authentication from the controller GUI to display the RADIUS Authentication Servers page. Then, click New in order to define a RADIUS server.
Define the RADIUS server parameters on the RADIUS Authentication Servers > New page. These parameters include:
RADIUS Server IP Address
Shared Secret
Port Number
Server Status
This document uses the ISE server with an IP address of 10.48.39.128.
Next, configure the WLAN which the clients use to connect to the wireless network for EAP-FAST authentication and assign to a dynamic interface. The WLAN name configured in this example is eap fast. This example assigns this WLAN to the management interface.
Complete these steps in order to configure the eap fast WLAN and its related parameters:
Click WLANs from the GUI of the controller in order to display the WLANs page.
This page lists the WLANs that exist on the controller.
Click New in order to create a new WLAN.
Configure the eap_fast WLAN SSID name, profile name and WLAN ID on the WLANs > New page. Then, click Apply.
Once you create a new WLAN, the WLAN > Edit page for the new WLAN appears. On this page, you can define various parameters specific to this WLAN. This includes General Policies, RADIUS Servers, Security Policies, and 802.1x Parameters.
Check the Admin Status check box under General Policies tab in order to enable the WLAN. If you want the AP to broadcast the SSID in its beacon frames, check the Broadcast SSID check box.
Under "WLAN -> Edit -> Security -> AAA Servers" tab choose the appropriate RADIUS server from the pull-down menu under RADIUS Servers.
Click Apply.
Note: This is the only EAP setting that needs to be configured on the controller for EAP authentication. All other configurations specific to EAP-FAST need to be done on the RADIUS server and the clients that need to be authenticated.
Perform these steps in order to configure the RADIUS server for EAP-FAST authentication:
This example configures username and password of the EAP-FAST client as <eap_fast> and <EAP-fast1>, respectively.
Complete these steps in order to define the controller as an AAA client on the ACS server:
Generally one would like to use this type of method in case they don't have PKI infrastructure in their deployment.
This method operates inside an Authenticated Diffie-HellmanKey Agreement Protocol (ADHP) tunnel before the peer authenticates the ISE server.
To support this method we need to enable ""Allow Anonymous In-band PAC Provisioning" on ISE under the "Authentication Allowed Protocols":
Note: Ensure you have allowed password type authetnication, like EAP-MS-CHAPv2 for EAP-FAST inner method, since obviously with Anonymous In-band Provisioning we can't use any certificates.
This is the most secure and recommended option. The TLS tunnel is built based on the server certificate which is validated by the supplicant and cleint certificate is validated by ISE (default).
That option requires to have PKI infrastructure for client and server, though it may be limitted to server side only or skipped on both sides.
On ISE there are two additional options for Authenticated In-band provisioning:
On ISE we also define simple authentication policy set for wireless users, below example is using as conidtion parameter device type and location and authenticaiton type, authenticaiton flow matching that condition will be validated against internal user database.
This example will show Authenticated In-band PAC Provisioning flow andNetwork Access Manager(NAM) configuration settings along with respective WLC debugs.
Following steps need to be done in order to configure Anyconnect NAM profile to authenticate user session against ISE using EAP-FAST:
ISE authentication logs showing EAP-FAST and PAC provisioning flow can be seen under "Operations -> RADIUS -> Live Logs" and can be looked in more details using "Zoom" icon:
Following debugs were enabled on WLC during client authentication:
Client started dot1x authentication and provided EAPoL identity response to WLC
*Dot1x_NW_MsgTask_3: Feb 22 12:43:12.192: f4:8c:50:62:14:6b dot1x - moving mobile f4:8c:50:62:14:6b into Connecting state *Dot1x_NW_MsgTask_3: Feb 22 12:43:12.192: f4:8c:50:62:14:6b Sending EAP-Request/Identity to mobile f4:8c:50:62:14:6b (EAP Id 2) *Dot1x_NW_MsgTask_3: Feb 22 12:43:12.192: f4:8c:50:62:14:6b Sending 802.11 EAPOL message to mobile f4:8c:50:62:14:6b WLAN 3, AP WLAN 3 *Dot1x_NW_MsgTask_3: Feb 22 12:43:12.192: 00000000: 02 00 00 2a 01 02 00 2a 01 00 6e 65 74 77 6f 72 ...*...*..networ *Dot1x_NW_MsgTask_3: Feb 22 12:43:12.192: 00000010: 6b 69 64 3d 65 61 70 5f 66 61 73 74 2c 6e 61 73 kid=eap_fast,nas *Dot1x_NW_MsgTask_3: Feb 22 12:43:12.192: 00000020: 69 64 3d 6e 6f 2c 70 6f 72 74 69 64 3d 31 id=no,portid=1 *Dot1x_NW_MsgTask_3: Feb 22 12:43:13.720: f4:8c:50:62:14:6b Received 802.11 EAPOL message (len 46) from mobile f4:8c:50:62:14:6b *Dot1x_NW_MsgTask_3: Feb 22 12:43:13.720: 00000000: 02 00 00 0e 02 02 00 0e 01 61 6e 6f 6e 79 6d 6f .........anonymo *Dot1x_NW_MsgTask_3: Feb 22 12:43:13.720: 00000010: 75 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 us.............. *Dot1x_NW_MsgTask_3: Feb 22 12:43:13.720: 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .............. *Dot1x_NW_MsgTask_3: Feb 22 12:43:13.720: f4:8c:50:62:14:6b Received EAPOL EAPPKT from mobile f4:8c:50:62:14:6b *Dot1x_NW_MsgTask_3: Feb 22 12:43:13.720: f4:8c:50:62:14:6b Received Identity Response (count=2) from mobile f4:8c:50:62:14:6b *Dot1x_NW_MsgTask_3: Feb 22 12:43:13.720: f4:8c:50:62:14:6b Resetting reauth count 2 to 0 for mobile f4:8c:50:62:14:6b *Dot1x_NW_MsgTask_3: Feb 22 12:43:13.720: f4:8c:50:62:14:6b EAP State update from Connecting to Authenticating for mobile f4:8c:50:62:14:6b *Dot1x_NW_MsgTask_3: Feb 22 12:43:13.720: f4:8c:50:62:14:6b dot1x - moving mobile f4:8c:50:62:14:6b into Authenticating state *Dot1x_NW_MsgTask_3: Feb 22 12:43:13.720: f4:8c:50:62:14:6b Entering Backend Auth Response state for mobile f4:8c:50:62:14:6b
Unprotected identity username is seen in RADIUS request used during TLS establishing phase
*Dot1x_NW_MsgTask_3: Feb 22 12:43:13.736: f4:8c:50:62:14:6b [BE-req] Sending auth request to 'RADIUS' (proto 0x140001), for RealmName anonymous (dot1xName :anonymous) *aaaQueueReader: Feb 22 12:43:13.736: AuthenticationRequest: 0x7f0289e32690 *aaaQueueReader: Feb 22 12:43:13.736: Callback.....................................0xd6ceb3ef00 *aaaQueueReader: Feb 22 12:43:13.736: protocolType.................................0x00140001 *aaaQueueReader: Feb 22 12:43:13.736: proxyState...................................F4:8C:50:62:14:6B-03:01 *aaaQueueReader: Feb 22 12:43:13.736: Packet contains 20 AVPs: *aaaQueueReader: Feb 22 12:43:13.736: AVP[01] User-Name................................anonymous (9 bytes)
Client completed authentication succesfully
*radiusTransportThread: Feb 22 12:43:13.891: f4:8c:50:62:14:6b Processed VSA 311, type 17, raw bytes 52, copied 32 bytes *radiusTransportThread: Feb 22 12:43:13.891: f4:8c:50:62:14:6b Access-Accept received from RADIUS server 10.48.39.128 (qid:11) with port:1812, pktId:0