如何使用Windows身份验证将其他数据传递给WCF服务(在身份验证期间)

时间:2012-07-30 12:42:52

标签: .net wcf authentication wcf-security

我有使用Windows身份验证的WCF网络服务。

结合

<bindings>
  <netTcpBinding>
    <binding name="CommonWindowsBinding" maxReceivedMessageSize="40000000" >
      <security mode="Transport">
        <transport clientCredentialType="Windows" />
      </security>
    </binding>
  </netTcpBinding>

</bindings>

端点

    <endpoint address="Windows"
              binding="netTcpBinding" 
              bindingConfiguration="CommonWindowsBinding" 
              name="MyNameSpace.Contracts.ISimplePluginServiceWindows" 
              contract="MyNameSpace.Contracts.ISimplePluginService">
      <identity>
        <dns value="WCfServer" />
      </identity>
    </endpoint>

我想将其他信息传递给服务以进行此类身份验证(我通过检查MS SQL Server的用户和登录来检查身份验证 - 我需要传递mssql服务器名称和数据库名称)。所以,我必须将一些自定义数据传递给validator =&gt;我必须为Windows身份验证制作自定义验证程序。我该怎么做?我找不到任何例子。

对于UserName身份验证,我可以使用CustomUserNameValidator(通过登录传递服务器地址和数据库名称)继承UserNamePasswordValidator。

2 个答案:

答案 0 :(得分:1)

Windows身份验证是Windows(E.G. Kerberos)。如果您想拥有自己的身份验证,请使用密码,但我认为它不会让您传递其他信息。你真的想将服务器地址和数据库名称传递给服务器吗?

Selecting a Credential Type

答案 1 :(得分:0)

我意识到,这是一种常见的错误做法。

  1. 我可以使用委派 - http://msdn.microsoft.com/en-en/library/ms730088.aspx

  2. 使用来自WCF服务的当前Windows用户凭据来验证MSSQL服务器
  3. 如果传递其他数据(例如服务器名称和数据库名称)是必要的,则应使用服务合同中的特殊方法执行此类操作。