Configure Cisco ISE and Juniper EX Switches for 802.1X-Based Authentication
About This Network Configuration Example
This network configuration example (NCE) shows you how to configure Cisco Identity Services Engine 2.X (Cisco ISE) and Juniper EX switches for IEEE 802.1X-based authentication.
Overview
Cisco ISE 2.X comes with many pre-imported network device profiles, but it doesn’t come with one for Juniper. Network device profiles specify how to handle MAC Radius, dot1x authentication, VLAN and ACL assignment, and CoA features.
Cisco ISE allows you to import network device profiles in XML format, enabling integration with any IEEE 802.1X standard network device. This example shows you how to import the Juniper network device profile, and configure settings to allow IEEE 802.1X-based authentication with Cisco ISE and Juniper EX switches.
Topology
In this example, we use the following network topology Figure 1:
Here’s more details about the hardware and software components used in this example:
Device |
Software Version |
Role |
---|---|---|
Juniper EX2300-C-12P |
Junos 18.2R1-S1 |
Switch and Authenticator |
Cisco ISE |
2.4.0.357 Patch2-18080100 |
RADIUS Server |
Polycom VVX 310 IP Phone |
SIP/5.5.1.11526/22-Nov-16 15:05 |
Supplicant (MAC Radius) |
Windows 10 Professional |
All recommended patches as of 2018-08-22 |
Supplicant (Dot1x) |
Network Printer |
N/A |
Supplicant (MAC Radius) |
Juniper Mist AP43 |
0.6.18981 |
Supplicant (MAC Radius) |
All users and endpoints are stored in the internal Cisco ISE database.
For external user database integration such as Microsoft Active Directory, LDAP and Certificate Based Authentication, refer to the Cisco Identity Services Engine Administrator Guide, Release 2.4.
Step-by-Step Procedure
- Import the Juniper Wired Device Profile
- Add EX Switches to the Juniper Device Profile
- Create Authorization Profiles
- Create Endpoint Identity Groups
- Add Endpoints
- Create User Identity Groups
- Add Users
- Set Authentication Policies
- Set Authorization Policies
- Configure a Cisco ISE Policy to Enable Guest Access
- Configure a Colorless Port Using IETF Egress-VLAN-ID Attributes
- Configure the 802.1X Protocol on the EX Switch
- Configure Windows 10
Import the Juniper Wired Device Profile
Assuming you’ve got Cisco ISE up and running on your network, the first thing you’ll need to do is add a Juniper EX switch device profile.
Add EX Switches to the Juniper Device Profile
You can add your EX switches individually, or as an IP address range.
Create Authorization Profiles
Authorization profiles allow you to apply different attributes to users or endpoints. You can change the VLAN by name or by VLAN ID. You can also assign a firewall filter that you have already configured on the switch. In this example, we create four authorization profiles:
Juniper_VoIP_VLAN_500
Juniper_VoIP_VLAN_100
Juniper_VoIP_VLAN_100_ACL
Juniper_VoIP_VLAN_100_dACL
The first profile sets the VoIP VLAN to 500 using the Juniper-VoIP-VLAN attribute.
The second authorization profile sets the Data VLAN to 100 using the standard RADIUS attribute for VLAN ID.
In Cisco ISE, choose Policy > Results, then from the left pane, choose Authorization > Authorization Profiles.
Name the profile Juniper_VoIP_VLAN_100.
Set the VLAN ID/Name to 100.
Click Add.
The third profile sets the Data VLAN to 100 and applies a local firewall filter/ACL to the supplicant. This firewall filter/ACL must already be configured on the switch. The firewall filter/ACL is applied using the standard Filter-ID radius attribute. Enter the name of the local filter configured on the switch.
In Cisco ISE, choose Policy > Results, then from the left pane, choose Authorization > Authorization Profiles.
Name the profile Juniper_VoIP_VLAN_100_ACL.
Under Common Tasks, set ACL (Filter-ID) to deny-all.
Set the VLAN ID/Name to 100.
Click Add.
The fourth authorization profile sets the Data VLAN to 100 and applies a dynamic/downloadable firewall filter/ACL to the supplicant. This firewall filter/ACL is created dynamically, so you don’t need to configure it locally on the switch. This authorization profile uses the Juniper-Switching-Filter attribute.
The syntax and feature sets differ from regular Junos firewall filters/ACLs. Multiple entries are separated by commas. See Juniper-Switching-Filter VSA Match Conditions and Actions for information about the syntax.
Create Endpoint Identity Groups
Endpoints, such as IP Phones, can be grouped together in endpoint identity groups to make it easier to apply common attributes, for example, VoIP VLAN.
Add Endpoints
The Polycom IP Phone in this setup is not configured for dot1x authentication. Instead, we rely on MAC RADIUS and MAC Authentication Bypass (MAB).
Create User Identity Groups
User Identity Groups allow you to apply specific attributes to users that are members of the group. In this example, we create three new User Identity Groups:
VLAN_100_User_ID_Group
VLAN_100_ACL_User_ID_Group
VLAN_100_dACL_User_ID_Group
Add Users
In this example, we create three local users named user1, user2 and user3. Each user is assigned to a different User Identity Group.
Here’s an overview of the three users we just created:
Set Authentication Policies
The authentication policy contains three entries per default.
The predefined MAB and dot1x rules have conditions that are tied to the network device profile. When requests come from a Juniper device, the switch automatically uses the attributes configured in the Juniper network device profile to authenticate a MAB and dot1x request. The authentication policy named Default contains a default network access policy for allowed protocols. This network access policy is compatible with Juniper EX switches.
In this example, we use the Default authentication policy.
Cisco ISE Default Network Access Profile
Here’s the Cisco ISE configuration for the Default Network Access profile for Juniper EX switches.
Set Authorization Policies
The order of the authorization policies is important and may vary depending on your setup. Make sure that you don’t have more general rules above the rules you are about to create, otherwise they won’t match.
In this example, we create four new rules, each with three conditions:
VLAN 500 for Polycom IP Phones connected to Juniper EX Switches
VLAN 100 for dot1x users connected to Juniper EX Switches
VLAN 100 with ACL for dot1x users connected to Juniper EX Switches
VLAN 100 with dACL for dot1x users connected to Juniper EX Switches
- Expand Authorization Policy and click the + button in the top left corner of the screen.
- Enter a name for the rule, for example, VLAN 500 for Polycom IP Phones connected to Juniper EX Switches.
- Click condition to open the Condition Studio.
- Drag and drop from the library on the left side to the editor on the right side. Build the different attributes you want to match on.
- When you’re finished don’t click Save. Instead, click the USE button in the bottom right corner.
Here’s an example of the Conditions Studio:
Let’s analyze these four new rules. Each rule has three conditions. The first two conditions are the same, but the third condition matches on a different attribute. A rule is applied to a port only when all three conditions are met.
Rule |
If the endpoint |
Then the switch assigns the port/supplicant to |
---|---|---|
VLAN 500 for Polycom IP Phones connected to Juniper EX Switches |
Passes network access authentication AND the request comes from a Juniper EX switch AND the endpoint is in the Polycom-IP-Phone group |
Voice VLAN 500 |
VLAN 100 for dot1x users connected to Juniper EX Switches |
Passes network access authentication AND the request comes from a Juniper EX switch AND the endpoint is in the VLAN_100_User_ID_Group |
Data VLAN 100 |
VLAN 100 with ACL for dot1x users connected to Juniper EX Switches |
Passes network access authentication AND the request comes from a Juniper EX switch AND the endpoint is in the VLAN_100_ACL_User_ID_Group |
Data VLAN 100 and an ACL |
VLAN 100 with dACL for dot1x users connected to Juniper EX Switches |
Passes network access authentication AND the request comes from a Juniper EX switch AND the endpoint is in the VLAN_100_dACL_User_ID_Group |
Data VLAN 100 and a dynamic/downloadable ACL |
Configure a Cisco ISE Policy to Enable Guest Access
For guest access use-cases involving the Cisco ISE guest portal, Juniper EX switches support Juniper-CWA-Redirect-URL VSA along with a special Filter-Id JNPR_RSVD_FILTER_CWA to redirect unknown guest clients to the Cisco ISE portal. The following diagram outlines the guest access flow with Cisco ISE:
Here’s the Juniper EX switch configuration for this scenario:
Here’s how to configure a Cisco ISE policy to enable guest access:
Configure a Colorless Port Using IETF Egress-VLAN-ID Attributes
With Junos 20.4 and above, you can automatically configure switch ports into access/trunk ports and assign multiple VLANs based on the RADIUS (Cisco ISE) response. For example, you can have a common port configuration on the switch and then reconfigure it automatically based on the identity of a connecting device, such as a Mist AP, a printer, or a corporate laptop.
Here’s an example of a trunk port configured for Mist AP with an untagged native VLAN for management:
By default, the port is configured as an access port with 802.1X and MAC-Radius enabled.
Here’s how to create a new profiler policy in Cisco ISE to auto-profile Mist APs based on Mist MAC-OUI. The profiler policy will send the full switch port configuration (trunk, with native vlan 51 and all the other required VLAN tagged).
How did we get all the numbers above? We used the following formula:
Create hex values for each VLAN you want to push in access-accept. The hex format is 0x31000005. The first seven characters can either be 0x31000 (tagged) or 0x32000 (untagged). The last three characters are the actual VLAN ID converted to hex. You can use a Decimal to hexadecimal converter to figure out the hexadecimal value. For example, to send untagged VLAN 51, the value is 0x32000033.
Once you enter this hex value, convert the whole value back to decimal. You can use this Hexidecimal to decimal converter to figure out the decimal value.
In this example, if you convert 0x32000033 to decimal, the value is 52428851.
Configure the Cisco ISE authorization profile using the decimal value.
Plug in a Mist AP and verify the output: