이 문서에서는 Cisco ASA 및 FTD 어플라이언스에서 SAML을 트러블슈팅하는 동안 발생하는 가장 일반적인 문제에 대해 설명합니다.
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
모범 사례 가이드는 다음 하드웨어 및 소프트웨어 버전을 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
SAML(Security Assertion Markup Language)은 보안 도메인 간에 인증 및 권한 부여 데이터를 교환하기 위한 XML 기반 프레임워크입니다. 사용자, 서비스 공급자(SP) 및 IdP(ID 공급자) 간에 신뢰의 동그라미가 생성되므로 여러 서비스에 대해 한 번에 로그인할 수 있습니다. SAML은 ASA 및 FTD VPN 헤드엔드에 대한 Cisco Secure Client 연결을 위한 원격 액세스 VPN 인증에 사용할 수 있습니다. 여기서 ASA 또는 FTD는 신뢰 서클의 SP 엔터티입니다.
대부분의 SAML 문제는 사용 중인 IdP 및 ASA/FTD의 컨피그레이션을 확인하여 해결할 수 있습니다. 원인이 명확하지 않은 경우 디버그는 더 명확한 설명을 제공하며 이 가이드의 예는 debug webvpn saml 255 명령에서 파생됩니다.
이 문서의 목적은 알려진 SAML 문제 및 가능한 해결책을 신속하게 참조하는 것입니다.
이는 일반적으로 방화벽 webvpn 컨피그레이션의 saml idp [entityID] 명령이 다음 예에 표시된 것처럼 IdP의 메타데이터에 있는 IdP 엔티티 ID와 일치하지 않음을 의미합니다.
디버그 예:
Sep 05 23:54:02 [SAML] consume_assertion: The identifier of a provider is unknown to #LassoServer. To register a provider in a #LassoServer object, you must use the methods lasso_server_add_provider() or lasso_server_add_provider_from_buffer().
IDP에서:
<EntityDescriptor ID="_7e53f3f3-7c79-444a-b42d-d60ae13f0948" entityID="https://sts.example.net/69c69fff-03f6-4c9c-be73-9ed4f5f894c/">
ASA/FTD에서:
saml idp https://sts.example.net/69c69fff-03f6-4c9c-be73-9ed4f5f894 >>>> The entity ID is missing characters at the end
IdP 메타데이터 파일의 엔티티 ID를 확인하고 정확히 일치하도록 saml idp [entity id] 명령을 변경합니다. 백슬래시(/) 문자를 포함합니다.
방화벽의 클럭이 어설션의 유효성을 벗어났으므로 방화벽에서 IdP가 제공한 어설션의 유효성을 검사할 수 없습니다.
디버그 예:
[SAML] consume_assertion: assertion is expired or not valid
예:
[SAML] NotBefore:2022-06-21T09:52:10.759Z NotOnOrAfter:2022-06-21T10:57:10.759Z timeout: 0 >>>>> Validity of the saml assertion provided by the IDP
Jun 21 15:20:46 [SAML] consume_assertion: assertion is expired or not valid
firepower# show clock
15:26:49.240 UTC Tue Jun 21 2022 >>>> Current time on the firewall
이전 예에서는 09:52:10.759 UTC에서 10:57:10.759 UTC 사이에서만 검증이 유효하며 방화벽의 시간이 유효성 창을 벗어난 것을 확인할 수 있습니다.
참고: 어설션에 표시되는 유효 기간은 UTC입니다. 방화벽의 시계가 다른 표준 시간대에 구성된 경우 유효성 검사 전 시간을 UTC로 변환합니다.
수동으로 또는 NTP 서버를 사용하여 방화벽의 올바른 시간을 구성하고 방화벽의 현재 시간이 UTC의 어설션에 대한 유효성 내에 있는지 확인합니다. 방화벽이 UTC와 다른 표준 시간대에 구성된 경우 검증의 유효성을 확인하기 전에 시간이 UTC로 변환되었는지 확인합니다.
trustpoint idp <trustpoint> 명령을 사용하는 방화벽 webvpn에서 잘못된 IdP 인증서 컨피그레이션으로 인해 방화벽이 IdP에서 수신한 SAML assertion의 서명을 확인하지 못하는 경우.
디버그 예:
[Lasso] func=xmlSecOpenSSLEvpSignatureVerify:file=evp_signatures.c:line=372:obj=rsa-sha256:subj=unknown:error=18:data do not match:details=EVP_VerifyFinal: signature does not verify
방화벽의 IdP에서 인증서를 다운로드하여 설치하고 방화벽 webvpn 컨피그레이션 아래에 새 신뢰 지점을 할당합니다. IdP 서명 인증서는 일반적으로 IdP의 메타데이터 또는 디코딩된 SAML 응답에서 찾을 수 있습니다.
IdP가 잘못된 회신 URL(Assertion Consumer Service URL)로 구성되어 있습니다.
디버그 예: 초기 인증 요청이 전송된 후에는 디버그가 표시되지 않습니다. 사용자는 자격 증명을 입력할 수 없지만, 연결이 실패하고 디버그가 인쇄되지 않은 후에는 입력할 수 있습니다.
IDP에서:

FW 또는 SP 메타데이터에서:
<AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://ac-vpn.local/+CSCOE+/saml/sp/acs?tgname=acvpn" />
이 예에서는 IdP의 "Assertion Consumer Service URL"이 SP의 메타데이터 위치와 일치하지 않음을 확인할 수 있습니다.
SP의 메타데이터에 표시된 대로 IdP에서 Assertion Consumer Service URL을 변경합니다. SP의 메타데이터는 show saml metadata <tunnel-group-name> 명령을 사용하여 가져올 수 있습니다.
IdP가 SAML 응답에서 잘못된 터널 그룹 등의 잘못된 대상을 전송하는 경우
디버그 예:
[SAML] consume_assertion: assertion audience is invalid
SAML 추적에서:
<samlp:Response ID="_36585f72-f813-471b-b4fd-3663fd24ffe8"
Version="2.0"
IssueInstant="2022-06-21T11:36:26.664Z"
Destination="https://ac-vpn.local/+CSCOE+/saml/sp/acs?tgname=acvpn1"
Recipient="https://ac-vpn.local/+CSCOE+/saml/sp/acs?tgname=acvpn1"
<AudienceRestriction> <Audience>https://ac-vpn.local/saml/sp/metadata/acvpnAudience> AudienceRestriction>
방화벽 또는 SP 메타데이터에서:
<AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://ac-vpn.local/+CSCOE+/saml/sp/acs?tgname=acvpn" />
IdP의 컨피그레이션을 Destination(대상) 및 Recipient(수신자)로 수정합니다. SAML 응답은 show saml metadata <tunnel-group-name> 출력의 방화벽/SP 메타데이터에 표시된 위치와 일치해야 합니다.
webvpn에서 SAML 컨피그레이션을 수정한 후, saml identity-provider <IDP-Entity-ID> 명령을 제거하고 tunnel-group 아래에 다시 추가하는 것이 좋습니다.
터널 그룹 아래의 saml identity-provider <IDP-Entity-ID> 명령을 제거하고 다시 추가합니다.
여러 터널 그룹에 대해 동일한 IdP SSO 애플리케이션을 사용하도록 SAML 인증을 구성하려면 아래의 컨피그레이션 단계를 검토하십시오.
ASA 9.16 이하, FDM 관리 FTD 또는 FMC/FTD 7.0 이하 버전의 옵션 1:
ASA 9.17.1 이상 또는 FTD/FMC 7.1 이상에 대한 옵션 2:
클라이언트 장치의 Secure Client 소프트웨어에서 다음과 같은 여러 가지 이유로 인해 볼 수 있습니다.
디버그 예:
[SAML] relay-state hash mismatch.
대부분의 SAML 트러블슈팅은 webvpn SAML 디버그 출력을 사용하여 수행할 수 있지만, 추가 디버그가 문제의 원인을 파악하는 데 도움이 될 수 있는 경우가 있습니다.
firepower# debug webvpn saml 255 firepower# debug webvpn 255 firepower# debug webvpn session 255 firepower# debug webvpn request 255
| 개정 | 게시 날짜 | 의견 |
|---|---|---|
2.0 |
12-Oct-2026
|
맞춤법, 문법, 간격, 가로줄을 별도의 섹션으로 삽입하고 CCW 알림을 수정했습니다. |
1.0 |
01-Aug-2025
|
최초 릴리스 |