Web服务安全问题排查指南

Web服务的交互过程中,可能会遇到安全验证相关的错误。这类错误通常表现为接收到一个未加密或错误加密的故障信息。具体的错误信息可能如下所示:

[MessageSecurityException: 从对方接收到一个未加密或错误加密的故障。这个故障可能是对一个未正确加密的请求的响应。请查看内部FaultException以获取故障代码和详细信息。]

内部异常显示如下:

消息中至少有一个安全令牌无法验证。

这个错误信息并没有提供足够的信息来定位问题,但至少知道存在一个安全问题。为了排查这个问题,首先需要在Web服务上启用日志记录。可以通过在web.config文件中的system.serviceModel节点添加以下诊断设置来启用传输级别的消息日志记录:

<system.serviceModel> <diagnostics> <messageLogging maxMessagesToLog="25000" logEntireMessage="true" logMessagesAtServiceLevel="false" logMalformedMessages="true" logMessagesAtTransportLevel="true"> <filters> <clear/> </filters> </messageLogging> </diagnostics> </system.serviceModel>

接下来,需要创建一个文件,以便可以使用Microsoft Trace Viewer打开它。为此,需要在system.diagnostic节点下添加以下设置(注意日志文件的名称和位置):

<system.diagnostics> <sources> <source name="System.ServiceModel" switchValue="Warning, ActivityTracing" propagateActivity="true"> <listeners> <add name="xml"/> </listeners> </source> <source name="System.ServiceModel.MessageLogging" switchValue="Warning"> <listeners> <add name="xml"/> </listeners> </source> </sources> <sharedListeners> <add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="C:\Temp\myService.svclog"/> </sharedListeners> </system.diagnostics>
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485