gpt4 book ai didi

c# - 仅在 web.config 端点 BindingConfiguration 中使用自定义用户名验证器就足够了吗?

转载 作者:行者123 更新时间:2023-11-30 22:38:46 26 4
gpt4 key购买 nike

我有一个客户用户名/密码验证器。将它放在 web.config 的端点绑定(bind)配置属性中是否足够,或者我是否需要在 Service 方法中显式调用它。我注意到当我不称它为服务操作时,它不会被调用。我做错了什么吗?

这就是我定义绑定(bind)部分的方式:

<bindings>
<wsHttpBinding>
<binding name="CustomAuthentication">
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</wsHttpBinding>
</bindings>

这就是我定义服务节点的方式:

<service behaviorConfiguration="CustomValidator" name="Test.TestService">

我的端点属性有它的 BindingConfiguration = "CustomAuthentication"

这就是我在 ServiceBehaviors 中定义行为的方式:

<behavior name="CustomValidator">
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="Test.CustomUserNameValidator, FuzionSync"/>

<serviceCertificate findValue="MyWebSite" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName"/>

</serviceCredentials>

<serviceMetadata httpGetEnabled="True"/>

</behavior>

当我运行 wcf 测试客户端来调用服务时,它甚至没有调用 Validate 方法。我调用它的唯一方法是将它放在一个要显式调用的操作中。

最佳答案

您需要在绑定(bind)配置和服务行为中指定这一点。这是它在我们的一个项目中的样子(重要部分是 clientCredentialType="UserName"<serviceCredentials> 元素):

<bindings>
<wsHttpBinding>
<binding name="SSLWithCustomAuthentication">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None" />
<message clientCredentialType="UserName"
negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>

<behaviors>
<serviceBehaviors>
<behavior name="customAuthenticationBehavior">
<serviceCredentials>
<userNameAuthentication
userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="Namespace.YourValidator, AssemblyName"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>

然后让您的服务使用 behaviorConfiguration="customAuthenticationBehavior" .

请注意,我认为 WCF 不允许您在没有 SSL 的情况下使用用户名身份验证。

关于c# - 仅在 web.config 端点 BindingConfiguration 中使用自定义用户名验证器就足够了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5993024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com