我有一个调用多个 WCF 服务的 asp.net Web 应用程序。 Web 应用程序位于 www.mydomain.com,服务位于 services.mydomain.com。它们托管在同一台服务器上。
我刚刚向使用传输安全 (https) 和 Windows 身份验证的服务添加了安全端点 (bassicHttpBindings):
<binding name="WindowsSecuredBinding">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
并将客户端 Web 应用程序配置为使用这些新的安全端点。我期待下一步是在 Web 应用程序中编写一些代码来设置客户端凭据,以便通过 Windows 身份验证。令我惊讶的是,在没有设置客户端凭据的情况下,服务调用也成功了。我假设它必须发送运行网络应用程序的帐户,但不知道如何验证。在其他情况下,我认为我已经看到客户端凭据没有隐式默认值。
所以我有两个问题:
最佳答案
以下是审核 MSDN 页面中的重要部分:
<behaviors>
<behavior name="myAuditBehavior">
<serviceSecurityAudit auditLogLocation="Application"
suppressAuditFailure="false"
serviceAuthorizationAuditLevel="None"
messageAuthenticationAuditLevel="SuccessOrFailure" />
</behavior>
</behaviors>
并将行为添加到服务中:
<service type="[Your service type here]" behaviorConfiguration="myAuditBehavior">
启用审核后,您可以查看所有授权事件(如果以这种方式配置,则成功和失败)。这应该允许您验证您的安全设置是否按照您希望的方式进行。
如果您碰巧需要传递使用 ASP.NET Web 应用程序的用户凭据的功能(这称为模拟),请在此页面“Delagation and Impersonation with WCF”上找到有关该应用程序的 msdn 文档。
关于asp.net - WCF Windows 身份验证如何在不显式设置凭据的情况下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12712704/