我有一个asp.net web应用程序,使得几个WCF服务调用。 Web应用程序位于www.mydomain.com和服务在services.mydomain.com。 他们是来自同一服务器托管。
我刚刚加入安全端点(bassicHttpBindings)到使用传输安全(HTTPS)和Windows authenication服务:
<binding name="WindowsSecuredBinding">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
并配置了客户端的Web应用程序使用这些新的安全端点。 我期待下一步在Web应用程序设置客户端凭据才能通过Windows身份验证来写一些代码。 令我惊讶的是,该服务呼叫成功没有设置客户端凭证。 我假设它必须在发送的Web应用程序在其下运行,但不知道如何验证帐户。 在其他情况下,我想我已经看到了没有隐含的默认客户端凭证。
所以,我有两个问题:
- 认证成功如何? 是否发送应用程序下运行的用户,浏览器用户的凭据,没有凭据?
- 如何调试/日志/跟踪认证过程? 我想至少查看通过被认证的,所以我可以验证安全性的用户名。
- 有了你有它在服务器和客户端的当前配置的客户端发送,它是下运行的creditials。 因为凭据类型设置为Windows,导致安全协商Kerberos的检查,如果你在一个领域或NTLM如果它是一个工作组环境。 ( 更多信息可以在这里找到。 )
- 要调试的认证过程WCF有一个审计功能可以启用。 说明添加审计在这里 。
下面是来自审计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应用程序的用户的凭据的功能(这就是所谓的模拟)对MSDN文档是在此页“找到Delagation和模拟与WCF ”。
文章来源: How does WCF Windows authentication work without explicitly setting credentials