本文档介绍在对Cisco ASA和FTD设备上的SAML进行故障排除时遇到的最常见问题。
Cisco 建议您了解以下主题:
最佳实践指南基于以下硬件和软件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
SAML(Security Assertion Markup Language,安全声明标记语言)是一个基于XML的框架,用于在安全域之间交换身份验证和授权数据。它在用户、服务提供商(SP)和身份提供者(IdP)之间创建信任圈,允许用户一次性登录多个服务。SAML可用于思科安全客户端连接到ASA和FTD VPN头端的远程访问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断言的签名时。
调试示例:
[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(断言消费者服务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上的“断言消费者服务URL”与SP元数据上的位置不匹配。
更改IdP上的断言使用者服务URL,如SP的元数据中所示。可以使用show saml metadata <tunnel-group-name> 命令获取SP的元数据。
当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上作为目标和收件人的配置。SAML响应必须与show saml metadata <tunnel-group-name> 输出中的防火墙/SP元数据中所示的位置匹配。
在webvpn下对SAML配置进行任何修改后,建议删除并重新添加tunnel-group下的saml identity-provider <IDP-Entity-ID>命令。
在tunnel-group下删除并重新添加saml identity-provider <IDP-Entity-ID>命令。
要将SAML身份验证配置为对多个隧道组使用相同的IdP SSO应用,请查看以下配置步骤。
选项1,适用于ASA 9.16及更低版本、FDM管理的FTD或FMC/FTD 7.0及更低版本:
ASA 9.17.1及更高版本或FTD/FMC 7.1及更高版本的选项2:
由于多种原因(包括但不限于),可以在客户端设备上的安全客户端软件上看到这种情况:
调试示例:
[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
|
初始版本 |