0

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

我已经实现了自定义 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. 我应该使用 <identity\> 元素吗?

我非常乐意使用 operationContext.ServiceSecurityContext 但我不知道如何在客户端设置它以及在哪里放置我的自定义许可证密钥。

我有多个端点,所以我希望我的许可证密钥只有一个地方。从代码中设置它会更好。

谢谢

4

1 回答 1

1

您可能会对本文中的 WCF 中的全球化模式(WS-I18N 实现)感兴趣,因为它演示了如何使用 WCF 带外机制来发送和接收自定义信息。这是关于全球化,当然不是许可,但问题似乎有点相似。

于 2011-08-19T16:42:19.980 回答