Phase 3: ASA SAML Service Provider

Phase 3: ASA SAML Service Provider Configuration

Import IdP Certificate

Import SAML signing cert to ASA trustpoint
! Create trustpoint for Entra (or ISE if Option A) signing cert
crypto ca trustpoint ENTRA-SAML-SIGNING
 enrollment terminal
 no ca-check
crypto ca authenticate ENTRA-SAML-SIGNING
! Paste Base64 certificate from Phase 1

! Verify
show crypto ca certificate ENTRA-SAML-SIGNING

Configure SAML IdP

Option A: ISE as IdP proxy
webvpn
 saml idp https://<ise-fqdn>/admin/saml/idp
  url sign-in https://<ise-fqdn>/portal/SSOLoginResponse.action
  url sign-out https://<ise-fqdn>/portal/SSOLogoutResponse.action
  trustpoint idp ENTRA-SAML-SIGNING
  trustpoint sp ASA-SAML-SP-CERT
  base-url https://<asa-external-fqdn>
  no signature
  no force re-authentication
Option B: Entra as direct IdP
webvpn
 saml idp https://sts.windows.net/<entra-tenant-id>/
  url sign-in https://login.microsoftonline.com/<tenant-id>/saml2
  url sign-out https://login.microsoftonline.com/<tenant-id>/saml2
  trustpoint idp ENTRA-SAML-SIGNING
  trustpoint sp ASA-SAML-SP-CERT
  base-url https://<asa-external-fqdn>
  no signature
  no force re-authentication

Tunnel Group SAML Binding

! Bind SAML to the VPN tunnel group
tunnel-group <tunnel-group-name> webvpn-attributes
 authentication saml
 saml identity-provider https://sts.windows.net/<tenant-id>/
 ! or ISE entity ID if Option A

ASA SP Certificate

Generate or use existing ASA identity cert for SAML SP
! If ASA already has an identity cert for WebVPN, reuse it
! Otherwise generate:
crypto key generate rsa label ASA-SAML-SP modulus 2048
crypto ca trustpoint ASA-SAML-SP-CERT
 enrollment self
 subject-name CN=<asa-external-fqdn>
 keypair ASA-SAML-SP
crypto ca enroll ASA-SAML-SP-CERT

! Export SP metadata for Entra registration
show saml metadata <tunnel-group-name>

Dynamic Access Policy (DAP)

Map SAML attributes to DAP for group-based access
! DAP can match on SAML assertion attributes
! Example: match Entra group claim for tiered VPN access
dynamic-access-policy-record VPN-FULL-ACCESS
 priority 10
 ! Match SAML group attribute from Entra

dynamic-access-policy-record VPN-LIMITED
 priority 20
 ! Default fallback

Verification

Verify SAML config
show saml metadata <tunnel-group-name>
show webvpn saml idp
show running-config tunnel-group <name> webvpn-attributes