通过标头中的WCF从客户端向服务器发送licensekey

时间:2011-08-19 16:30:17

标签: wcf security authentication endpoint

我想使用许可证密钥对我的中心验证应用服务器,我不希望将其作为参数包含在我的调用中。

我已经实现了自定义ServiceAuthorizationManager,但我不确定在客户端设置此licenseKey的最佳方式和地点是什么。

我在下面尝试过(我的方法可能完全错误)

<endpoint address="http://127.0.0.1:8000/ApiDataService"  binding="wsHttpBinding"
    contract="MyInterfaces.IApiDataService">
        <headers>
            <LicenseKey>MyLicenseKey</LicenseKey>
        </headers>
</endpoint>

然后在ServiceAuthorizationManager.CheckAccessCore(OperationContext operationContext)

我设法通过以下方式找到标题索引:

operationContext.RequestContext.RequestMessage.Headers.FindHeader("LicenseKey", "")

但检索到的HeaderInfo不再有我的内容了。 我确信它在operationContext.RequestContext中,所以我应该能够以某种方式捕获它。

  1. 任何想法怎么样?
  2. 有没有更好/标准的方法呢?
  3. 我应该使用&lt; identity \&gt;元件?
  4. 我非常乐意使用operationContext.ServiceSecurityContext但我不知道如何在客户端设置它以及在哪里放置我的自定义许可证密钥。

    我有多个端点,所以我更愿意为我的许可证密钥设置一个位置。从代码中设置它会更好。

    由于

1 个答案:

答案 0 :(得分:1)

这篇文章Globalization Patterns in WCF (WS-I18N implementation)可能会让您感兴趣,因为它演示了如何使用WCF带外机制来发送和接收自定义信息。这是关于全球化,当然不是许可,但问题似乎有些相似。