Skip to content

Troubleshooting 802.1X with show authentication sessions and debug Commands

J
Troubleshooting 802.1X with show authentication sessions and debug Commands

When an endpoint cannot authenticate, the switch holds all the diagnostic evidence you need. The question is which commands expose that evidence and how to read the output without chasing red herrings. This article covers the full diagnostic toolkit available on a Cisco Catalyst 9300 running IOS XE 17.9.x, using Cisco ISE 3.2 as the RADIUS server.

Before running any debug, understand that debug dot1x and debug radius generate significant console output on a busy switch. Always redirect output to a buffer or a terminal monitor session, and limit debug to specific interfaces whenever the command syntax allows. In production, enable debugs during a maintenance window or on a test port unless the situation demands otherwise.


The Primary Diagnostic: show authentication sessions

show authentication sessions is the first command to run. It gives a table-level view of every port currently tracked by the 802.1X state machine.

SW1# show authentication sessions
Interface    MAC Address      Method   Domain   Status         Session ID
Gi1/0/1      a4b1.c2d3.e4f5   dot1x    DATA     Auth           0A00630A0000001B
Gi1/0/2      001e.7a3b.9c12   mab      DATA     Auth           0A00630A0000001C
Gi1/0/3      0050.56b3.11aa   dot1x    DATA     Unauthorized   0A00630A0000001D
Gi1/0/4      0000.0000.0000   N/A      N/A      No Auth        N/A
Gi1/0/5      001e.7a3b.9c55   dot1x    VOICE    Auth           0A00630A0000001F

Column meanings:

  • Interface — the physical port
  • MAC Address — learned MAC of the endpoint. All-zeros means no supplicant has been detected.
  • Methoddot1x, mab, or webauth
  • DomainDATA or VOICE (relevant in multi-domain auth mode — see Article 13: 802.1X Authentication Host Modes and Article 17: 802.1X with IP Phones)
  • StatusAuth (authorized), Unauthorized, No Auth (no attempt made), Authz Failed
  • Session ID — used to correlate with ISE live logs; the hex string encodes the switch IP and a session counter

A port showing Unauthorized means authentication has been attempted and failed, or is still in progress. A port showing No Auth means the switch has not received any EAPOL frames and no MAB fallback has triggered yet.

Drilling Into a Single Port

SW1# show authentication sessions interface GigabitEthernet1/0/3 details
            Interface:  GigabitEthernet1/0/3
          MAC Address:  0050.56b3.11aa
         IPv6 Address:  Unknown
         IPv4 Address:  Unknown
           User-Name:  host/CORP-PC-07.corp.local
              Status:  Unauthorized
              Domain:  DATA
      Security Policy:  Should Secure
      Security Status:  Unsecured
         Oper host mode:  multi-auth
       Oper control dir:  both
          Session timeout:  N/A
    Common Session ID:  0A00630A0000001D
      Acct Session ID:  0x00000022
               Handle:  0xE3000013
       Current Policy:  POLICY_Gi1/0/3

Local Policies:
        Service Template: DEFAULT_LINKSEC_POLICY_SHOULD_SECURE (priority 150)

Server Policies:

Method status list:
       Method           State
       dot1x            Authc Failed
       mab              Authc Failed

This output tells you everything about the port's current state. Pay attention to:

  • User-Name — this is the identity string sent to RADIUS. For EAP-TLS and PEAP, it is the machine or user principal name. If this field is blank, the supplicant is not sending credentials.
  • Status: Unauthorized combined with dot1x: Authc Failed and mab: Authc Failed — both methods have been tried and rejected. The switch is not waiting; it has already made a determination.
  • Server Policies — empty. This means ISE sent no authorization attributes (no VLAN, no dACL). Either ISE rejected the request or the switch never successfully reached ISE.

Reading the Method Status List

The method status list shows every method attempted in order. Common states:

State Meaning
Running Currently attempting authentication
Authc Success Credentials accepted by RADIUS
Authc Failed RADIUS returned Access-Reject
No Response Supplicant did not respond to EAP challenge
Stopped Method was abandoned (e.g., timeout)

If dot1x shows No Response and mab shows Authc Failed, the endpoint is not running a supplicant and its MAC is not in ISE's endpoint database. That is a different problem from dot1x: Authc Failed, which means the supplicant ran but credentials were wrong or the certificate was rejected.


show dot1x all

SW1# show dot1x all
Sysauthcontrol                 Enabled
Dot1x Protocol Version         3
Critical Recovery Delay        100
Critical EAPOL                 Disabled

Interface GigabitEthernet1/0/3
------------------------------------
Dot1x Info for GigabitEthernet1/0/3
-----------------------------------
PAE                       = AUTHENTICATOR
PortControl               = AUTO
ControlDirection          = Both
HostMode                  = MULTI_AUTH
ReAuthentication          = Disabled
QuietPeriod               = 60
ServerTimeout             = 30
SuppTimeout               = 30
ReAuthPeriod              = 3600 (Locally configured)
ReAuthMax                 = 2
MaxReq                    = 2
TxPeriod                  = 30
RateLimitPeriod           = 0

Use this command to verify that 802.1X is globally enabled (Sysauthcontrol: Enabled) and to confirm per-port timer values. If TxPeriod is at the default of 30 seconds and the switch has to send two EAP-Request/Identity frames before giving up, that is 60 seconds of delay before MAB fallback starts. In environments with non-supplicant devices, tuning TxPeriod down to 10 seconds dramatically reduces connectivity delays.


show ip access-lists and show authentication sessions (dACL Verification)

When ISE pushes a downloadable ACL, verifying that it applied correctly requires two commands in sequence.

SW1# show authentication sessions interface GigabitEthernet1/0/1 details | include Filter-Id|ACS
        ACS ACL:  xGENTLEMAN-ACL-12345678
SW1# show ip access-lists xGENTLEMAN-ACL-12345678
Extended IP access list xGENTLEMAN-ACL-12345678
    10 permit tcp any any eq 80 (3412 matches)
    20 permit tcp any any eq 443 (18903 matches)
    30 deny   ip any any (14 matches)

If the ACL name appears in the session details but the ACL itself does not exist, the switch received the attribute but failed to create the list — a known issue when the RADIUS attribute format is wrong. See Article 24: dACL Not Applying Correctly in 802.1X for the full diagnostic sequence.


debug dot1x all

Enable only after reviewing show output. On an access switch with 48 active ports, debug dot1x all is noisy. If possible, use:

SW1# debug dot1x all

Then unplug and replug the problematic endpoint to trigger a fresh authentication cycle. The output from a successful PEAP exchange looks like this:

*Mar 19 14:22:01.441: dot1x-ev(Gi1/0/3): New client 0050.56b3.11aa on interface
*Mar 19 14:22:01.442: dot1x-sm(Gi1/0/3): Posting EAPOL_START for 0050.56b3.11aa
*Mar 19 14:22:01.443: dot1x-ev(Gi1/0/3): Sending EAP-Request/Identity to 0050.56b3.11aa
*Mar 19 14:22:01.891: dot1x-ev(Gi1/0/3): Received EAP-Response/Identity from 0050.56b3.11aa
*Mar 19 14:22:01.892: dot1x-sm(Gi1/0/3): Posting RX_REQ for 0050.56b3.11aa
*Mar 19 14:22:01.893: dot1x-ev(Gi1/0/3): Sending RADIUS request for 0050.56b3.11aa
*Mar 19 14:22:02.105: dot1x-ev(Gi1/0/3): Received RADIUS Access-Challenge
*Mar 19 14:22:02.106: dot1x-ev(Gi1/0/3): Sending EAP-Request to 0050.56b3.11aa (PEAP)
*Mar 19 14:22:02.844: dot1x-ev(Gi1/0/3): Received EAP-Response from 0050.56b3.11aa
*Mar 19 14:22:03.211: dot1x-ev(Gi1/0/3): Received RADIUS Access-Accept
*Mar 19 14:22:03.212: dot1x-ev(Gi1/0/3): Authorization succeeded for 0050.56b3.11aa
*Mar 19 14:22:03.213: dot1x-sm(Gi1/0/3): Posting AUTHC_SUCCESS for 0050.56b3.11aa

A failed authentication ends with an Access-Reject:

*Mar 19 14:25:11.772: dot1x-ev(Gi1/0/3): Received RADIUS Access-Reject
*Mar 19 14:25:11.773: dot1x-sm(Gi1/0/3): Posting AUTHC_FAIL for 0050.56b3.11aa
*Mar 19 14:25:11.774: dot1x-ev(Gi1/0/3): Authentication failed for 0050.56b3.11aa

The key distinction: Access-Reject means ISE deliberately denied the request. If you see no RADIUS reply at all — only the initial send — the issue is network reachability between the switch and ISE, not a policy mismatch.


debug radius

debug radius shows the raw RADIUS exchange, including attribute values sent and received. This is essential when the authentication succeeds at the EAP level but VLAN assignment or dACL application fails.

SW1# debug radius
*Mar 19 14:30:05.112: RADIUS(0000001D): Send Access-Request to 10.0.0.10:1812 id 43
*Mar 19 14:30:05.113: RADIUS: authenticator 3F A1 2B 9C 4D 11 77 E2 ...
*Mar 19 14:30:05.113: RADIUS:  User-Name             [1]   25  "host/CORP-PC-07.corp.local"
*Mar 19 14:30:05.113: RADIUS:  NAS-IP-Address        [4]   6   10.0.99.1
*Mar 19 14:30:05.113: RADIUS:  NAS-Port              [5]   6   50003
*Mar 19 14:30:05.113: RADIUS:  Called-Station-Id     [30]  19  "10.0.99.1:Gi1/0/3"
*Mar 19 14:30:05.113: RADIUS:  NAS-Port-Type         [61]  6   Ethernet [15]
*Mar 19 14:30:05.113: RADIUS:  EAP-Message           [79]  8   ...
*Mar 19 14:30:05.339: RADIUS(0000001D): Received from id 43 10.0.0.10:1812
*Mar 19 14:30:05.339: RADIUS:  Access-Accept         [2]   ...
*Mar 19 14:30:05.339: RADIUS:  Tunnel-Type           [64]  6   VLAN [13]
*Mar 19 14:30:05.339: RADIUS:  Tunnel-Medium-Type    [65]  6   802 [6]
*Mar 19 14:30:05.339: RADIUS:  Tunnel-Private-Group-ID [81] 4   "10"
*Mar 19 14:30:05.339: RADIUS:  Class                 [25]  44  ...

When you see Access-Accept with Tunnel-Private-Group-ID: "10", the switch received the VLAN 10 assignment. If the port still ends up in the wrong VLAN, the issue is in how the switch applies the attribute, not what ISE sent. Check that authentication event fallback commands are not overriding the dynamic assignment.

If the debug shows no reply from 10.0.0.10, run show radius server-group all and ping 10.0.0.10 source vlan 99 to verify basic reachability. See Article 22: RADIUS Server Unreachable in 802.1X for the full reachability diagnostic.


debug aaa authentication and debug aaa authorization

When ISE accepts authentication but no policy attributes arrive, debug the AAA layer:

SW1# debug aaa authentication
SW1# debug aaa authorization
*Mar 19 14:35:02.441: AAA/BIND(0000001D): Bind i/f GigabitEthernet1/0/3
*Mar 19 14:35:02.442: AAA/AUTHEN/802.1X(0000001D): Method=ISE_SERVERS
*Mar 19 14:35:02.443: AAA/AUTHEN(0000001D): status = PASS
*Mar 19 14:35:02.444: AAA/AUTHOR/802.1X(0000001D): Method=ISE_SERVERS
*Mar 19 14:35:02.445: AAA/AUTHOR(0000001D): status = PASS
*Mar 19 14:35:02.445: AAA/AUTHOR/802.1X: Processing AV tunnel-type
*Mar 19 14:35:02.445: AAA/AUTHOR/802.1X: Processing AV tunnel-medium-type
*Mar 19 14:35:02.445: AAA/AUTHOR/802.1X: Processing AV tunnel-private-group-id = 10

If the AAA authorization debug shows status = PASS but no AV pairs follow, ISE's authorization rule matched a result profile that returns no VLAN. Navigate to ISE at Policy > Policy Sets > [Your Policy Set] > Authorization Rules and confirm the matched rule has an authorization profile with VLAN attributes populated.


show radius server-group and show radius statistics

SW1# show radius server-group all
Server group radius
    Sharecount = 1  sg_unconfigured = FALSE
    Type       = standard
    Deadtime(s) = 0
    Server(10.0.0.10:1812,1813)
       State=ACTIVE  Dead time remaining(s)=0
       Platform State=ACTIVE
SW1# show radius statistics
Auth. Rqst Sent:       14823
Auth. Rqst Timeouts:   12
Auth. Rqst Retransmit: 12
Auth. Rsp Received:    14811
Auth. Rsp Authenticat: 14811

A high ratio of timeouts to requests indicates intermittent reachability to ISE. Twelve timeouts out of nearly 15,000 requests is acceptable. Fifty timeouts in 200 requests indicates a connectivity or firewall problem.


Correlating with ISE Live Logs

Every session ID from show authentication sessions maps directly to an ISE live log entry. In ISE, navigate to Operations > RADIUS > Live Logs. Filter by NAS IP (10.0.99.1) or by endpoint MAC address. Click any log entry to expand the full authentication detail, including:

  • Which policy set was matched
  • Which authentication rule was evaluated
  • Which authorization rule fired
  • The exact attributes returned in the Access-Accept

The ISE live log also shows the failure reason in plain English — for example, "22040 Wrong password or invalid shared secret" or "15039 Rejected per authorization profile." Cross-referencing the switch debug output with the ISE live log gives you the complete picture of both sides of the exchange.


Troubleshooting

Symptom: show authentication sessions shows Status: Unauthorized, Method State: No Response

Cause: The supplicant is not responding to EAP-Request/Identity frames from the switch. This usually means the Windows 802.1X supplicant service (Wired AutoConfig) is not running, or the NIC is set to manually specify credentials and is waiting for user input on a machine-only boot.

Fix: On the Windows endpoint, verify the Wired AutoConfig service is set to Automatic and is running (services.msc). On the switch, check TxPeriod and MaxReq — if MaxReq is 2 and TxPeriod is 30, the switch waits 60 seconds before falling back to MAB. Reduce TxPeriod to 10 to accelerate fallback:

SW1(config-if)# dot1x timeout tx-period 10

Symptom: debug dot1x all shows EAP exchange completing, but debug radius shows Access-Reject

Cause: The EAP exchange succeeded at the transport layer, but ISE evaluated the identity against its policy and rejected it. Common reasons: the endpoint is not in the correct ISE identity group, the certificate is untrusted, the AD join is broken, or the authorization policy returned a Deny result.

Fix: In ISE, go to Operations > RADIUS > Live Logs, locate the failed session, and check the failure reason code. For certificate issues, verify the ISE trust store includes the root CA that signed the endpoint certificate (Administration > System > Certificates > Trusted Certificates). For AD lookup failures, check Administration > Identity Management > External Identity Sources > Active Directory > [Join Point] > Diagnostic.


Symptom: debug radius shows Access-Accept with correct VLAN attributes, but show authentication sessions shows wrong VLAN or no VLAN

Cause: The switch received the VLAN attribute but either an authentication event override command is forcing a different VLAN, or the port switchport access vlan command is statically set and a no switchport access vlan is needed to allow dynamic assignment. Alternatively, the authentication open command may be in use (Monitor Mode), and the port is placing traffic in the native VLAN regardless of what ISE returns.

Fix: Review the interface config with show running-config interface GigabitEthernet1/0/X. Remove any static switchport access vlan override. Confirm the auth event fallback VLANs are not intercepting the session. If authentication open is set (Monitor Mode), dynamic VLAN assignment does not redirect traffic — only the ACL is enforced. See Article 26: Monitor Mode vs Low-Impact Mode vs Closed Mode for a full explanation of how each mode handles VLAN assignment.


Symptom: show radius statistics shows high timeout count; ISE live logs show no corresponding request

Cause: RADIUS packets from the switch are not reaching ISE. The shared secret mismatch causes immediate reject (not timeout), so timeouts point to a network-level problem: ACL blocking UDP 1812/1813, wrong ISE IP configured on the switch, or ISE policy service node (PSN) is down.

Fix: Run ping 10.0.0.10 source vlan 99 from the switch. Verify the AAA server configuration matches the ISE PSN IP. In ISE, check Administration > Network Resources > Network Devices — confirm the switch's IP (10.0.99.1) is listed and the shared secret matches. Check any firewall or ACL between the management VLAN and ISE that might block UDP 1812 and 1813.


Turning Off Debugs

Always disable debugs when finished. A forgotten debug all on a production switch will eventually cause a CPU spike that impacts all users on the switch.

SW1# undebug all

Or selectively:

SW1# no debug dot1x all
SW1# no debug radius
SW1# no debug aaa authentication
SW1# no debug aaa authorization

Confirm with:

SW1# show debugging

The output should show no debugs active. If you used terminal monitor to see debug output in a remote SSH session, it does not automatically turn off when you disconnect — the debug processes continue until explicitly disabled.


What's Next: Article 26: Monitor Mode vs Low-Impact Mode vs Closed Mode: Choosing Your 802.1X Deployment Strategy — Understanding which deployment mode to use before you roll out 802.1X across production switches is the difference between a smooth rollout and a campus-wide outage. Article 26 covers all three modes with configuration examples and real-world tradeoffs.

© 2025 Ping Labz. All rights reserved.