Skip to content

Cisco AnyConnect MFA Setup with Mideye on ASA

This guide describes how to configure Cisco AnyConnect SSL VPN on a Cisco ASA (Adaptive Security Appliance) to use Mideye Server for multi-factor authentication via RADIUS.

ComponentVersions
Cisco ASA software8.3+ (recommended 9.x)
ASDM6.x / 7.x
AnyConnect Secure Mobility Client3.x / 4.x / 5.x
Mideye Server4.3.0+ (5.x+ for full feature support)
FeatureMinimum ASA versionNotes
Basic RADIUS AAA7.x+Stable in 8.x+
AnyConnect SSL VPN8.0+
Dynamic RADIUS reject messages8.3+ (stable in 9.1.2+)Requires PAP
Dynamic Access Policy (DAP) with RADIUS attributes8.0+ASDM only
MS-CHAPv2 password change8.x+
AnyConnect authentication timeout control8.4+ASDM only
  • A running Mideye Server with RADIUS enabled (default UDP port 1812)
  • Cisco ASA configured as a remote-access VPN using AnyConnect — refer to Cisco documentation for initial SSL VPN setup
  • CLI access to the ASA via SSH, console, or ASDM
  • Network connectivity between the ASA and Mideye Server on UDP port 1812

1. Add Cisco ASA as a RADIUS client in Mideye Server

Section titled “1. Add Cisco ASA as a RADIUS client in Mideye Server”

Add the Cisco ASA IP address as a RADIUS client in Mideye Server, using a shared secret that you will also configure on the ASA in the next step.

See RADIUS Clients in the reference guide.

2. Create a new AAA server group using RADIUS

Section titled “2. Create a new AAA server group using RADIUS”
  1. From the ASA CLI, enter global configuration mode:

    Terminal window
    Cisco-ASA> enable
    Cisco-ASA# config terminal
    Cisco-ASA (config)#
  2. Create a new AAA-server using RADIUS:

    Cisco-ASA (config)# aaa-server mideye-server protocol RADIUS
  3. Assign the Mideye Server IP address, shared secret, and timeout:

    Terminal window
    Cisco-ASA(config)# aaa-server mideye-server (inside) host 172.16.10.100
    Cisco-ASA(config-aaa-server-host)# key <shared-secret>
    Cisco-ASA(config-aaa-server-host)# authentication-port 1812
    Cisco-ASA(config-aaa-server-host)# accounting-port 1813
    Cisco-ASA(config-aaa-server-host)# timeout 35
    Cisco-ASA(config-aaa-server-host)# exit

    Replace 172.16.10.100 with your Mideye Server IP and inside with the ASA interface facing the Mideye Server. The timeout of 35 seconds is required for MFA flows.

  4. Apply the AAA server group to your existing SSL VPN tunnel group:

    Terminal window
    Cisco-ASA(config)# tunnel-group <your-tunnel-group> general-attributes
    Cisco-ASA(config-tunnel-general)# authentication-server-group mideye-server

    Replace <your-tunnel-group> with the name of your existing AnyConnect connection profile.

  5. Write the new configuration to memory:

    Terminal window
    Cisco-ASA(config)# write memory

To verify that RADIUS is configured correctly, log in to ASDM.

  1. Navigate to ConfigurationRemoteAccessVPNAAA/LocalUsers.
  2. Select the Server Group and the correct server name and click Test.
  3. Select Authentication and type a valid username and password.
  4. An OTP should be delivered. ASDM will show an error message because it cannot handle RADIUS Challenge-Response:

ASDM RADIUS test showing challenge-response error

This is expected — ASDM’s test dialog does not support the Access-Challenge flow. The actual AnyConnect client handles it correctly.

The default authentication timeout for the AnyConnect client is 12 seconds — too short for MFA. Change it to 35 seconds via ASDM.

  1. In ASDM, navigate to Configuration → Remote Access VPN → Network (Client) Access → AnyConnect Client Profile.
  2. Select the client profile and click Edit. If no profile exists, create one and assign it to the AnyConnect group policy, then click Edit.
  3. Navigate to Preferences (Part 2) and set Authentication timeout (seconds) to 35.
  4. The updated timeout is downloaded automatically when users connect.

AnyConnect client profile authentication timeout set to 35 seconds

  1. Optionally, add a Server Listing under Server List → Add with a display name and the FQDN of your SSL VPN URL.

Dynamic RADIUS reject messages display Mideye Server error messages (e.g. “Phone not reachable”) instead of the generic “Login Failed” text. This requires:

  • ASA software 9.1(2) or later
  • AnyConnect Secure Mobility Client 3.1.04066 or later
  • PAP as the authentication protocol (default)

To enable in ASDM:

  1. Navigate to Configuration → Remote Access VPN.
  2. Click AnyConnect Connection Profiles and select the profile used for RADIUS login, then click Edit.
  3. Expand Advanced and click Group Alias / Group URL.
  4. Check Enable the display of RADIUS Reject-Messages on the login screen when authentication is rejected.

These messages can be customized in Mideye Server — see User Messages Configuration.


6. Password change using MS-CHAPv2 (optional)

Section titled “6. Password change using MS-CHAPv2 (optional)”

Cisco ASA supports MS-CHAPv2, which allows users with expiring passwords to change them during AnyConnect SSL VPN login. This requires Mideye Server 4.3.0 or later and additional configuration on both the Mideye Server (see Network Policy Servers) and the ASA.

To switch the tunnel group from PAP to MS-CHAPv2:

Terminal window
Cisco-ASA(config)# tunnel-group <your-tunnel-group> ppp-attributes
Cisco-ASA(config-ppp)# no authentication pap
Cisco-ASA(config-ppp)# authentication ms-chap-v2
Cisco-ASA(config-ppp)# exit
Cisco-ASA(config)# write memory

7. Fix special character display (å, ä, ö)

Section titled “7. Fix special character display (å, ä, ö)”

By default, Mideye RADIUS clients use UTF-8 encoding. If special characters (å, ä, ö) do not display correctly in AnyConnect, change the encoding to ISO-8859-1:

  1. Open Mideye Configuration Tool and navigate to RADIUS Clients.
  2. Select the RADIUS client created for the ASA and click Modify.
  3. Under Client Configuration, change Encoding to ISO-8859-1.
  4. Click OK, Save, and restart the Mideye Server.

8. Dynamic Access Policy using RADIUS translation (optional)

Section titled “8. Dynamic Access Policy using RADIUS translation (optional)”

Dynamic Access Policy (DAP) can assign per-user or per-group network permissions based on LDAP attributes translated to RADIUS attributes (Attribute ID 25 / Class). All AnyConnect users share the same IP subnet but are granted access to specific resources based on their LDAP group membership.

  1. Enable RADIUS Translation in the LDAP Profile
  2. Create a RADIUS Translation Rule
  1. In ASDM, navigate to Configuration → Remote Access VPN → Network (Client) Access → Dynamic Access Policies. Click Add.
  2. Enter a policy name and set Selection Criteria to User has ALL of the following AAA attributes.
  3. Click Add and set:
    • AAA Attribute Type: RADIUS
    • Attribute ID: 25
    • Value: the group string configured in the Mideye RADIUS translation rule

Dynamic Access Policy configuration with RADIUS attribute

  1. Click the Network ACL Filters (client) tab, then Manage → Add. Create an ACL with the appropriate access rules for this group.

ACL entry editor for DAP permissions

  1. Repeat for additional groups as needed.
  2. Once verified, change the default DfltAccessPolicy action to Terminate to deny users that don’t match any DAP rule.

Default DAP policy set to Terminate

SymptomCheck
Authentication times out before OTP entryVerify both the ASA RADIUS timeout (35s) and AnyConnect client profile timeout (35s)
“Login Failed” with no detailsEnable dynamic RADIUS reject messages (step 5) — requires ASA 9.1.2+ and PAP
ASDM RADIUS test shows errorExpected — ASDM test dialog does not support Access-Challenge. Test with the actual AnyConnect client
OTP never arrivesVerify UDP port 1812 is open between the ASA and Mideye Server
Shared secret mismatchEnsure the key in the ASA config matches the RADIUS client in Mideye Server
Special characters (å, ä, ö) garbledChange encoding to ISO-8859-1 in Mideye RADIUS client configuration (step 7)
MS-CHAPv2 reject messages not shownExpected — ASA uses internal error messages with MS-CHAPv2
  • Dynamic RADIUS reject messages require PAP (default). When using MS-CHAPv2, the ASA displays its own internal error messages instead of Mideye’s custom messages. RADIUS Challenge-Response messages (OTP prompts) still work with both protocols.
  • ASDM test dialog does not support Access-Challenge — test results will show an error even when RADIUS is configured correctly. Use the actual AnyConnect client to verify the full MFA flow.