WCF在使用Windows时获取用户身份但仍允许使用匿名凭据

时间:2016-05-27 17:59:30

标签: c# wcf rest iis soap

我想锁定一些我的WCF方法,同时允许匿名使用其他方法。

目前我正在使用System.Threading.Thread.CurrentPrincipal.Identity.Name来确定请求者的登录,否则我假设是匿名的。

当我使用域帐户或本地帐户时,这适用于以下配置。但是,当我使用。\ LocalSystem(nt authority \ system)帐户(匿名)点击它时,我得到了一个" 401 - 未经授权:由于凭证无效而拒绝访问。"

预先感谢您提供的任何帮助,以便我可以在那里提取身份但是假设匿名(并让它们通过),而不是?

我当前的配置 - IIS身份验证= Windows和匿名=启用 - IIS授权规则=每个人和匿名=允许 - 安全模式=运输 - 传输clientCredentialType = Windows

  <basicHttpBinding>
    <binding.../>
      <security mode="Transport">
        <transport clientCredentialType="Windows" />
      </security>
. . . 
<!-- Authorization Rules Allow Anonymous -->
<security>
  <authorization>
    <add accessType="Allow" users="?" />
  </authorization>
</security>

1 个答案:

答案 0 :(得分:0)

我实际上已经找到了问题,也许有人有更好的方法来做到这一点。

当客户端是域(受信任)的一部分时,它可以使用域帐户,本地帐户,甚至本地系统(nt authority \ system)...但是如果客户端不是域的一部分(工作组)那么它适用于域帐户,本地帐户,但不适用于本地系统......