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 を使用することに満足していますが、クライアント側で設定する方法と、カスタム ライセンス キーを配置する場所がわかりません。

複数のエンドポイントがあるため、ライセンス キーを 1 か所に保管したいと考えています。コードから設定するとさらに良いでしょう。

ありがとう

4

1 に答える 1

1

この記事(WCF のグローバリゼーション パターン (WS-I18N 実装))は、WCF 帯域外メカニズムを使用してカスタム情報を送受信する方法を示しているため、興味があるかもしれません。もちろんライセンスではなくグローバリゼーションに関するものですが、問題はやや似ているようです。

于 2011-08-19T16:42:19.980 に答える