ライセンス キーを使用してセントラルに対してアプリ サーバーを認証したいのですが、それを呼び出しにパラメーターとして含めたくありません。
カスタム 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 にあると確信しているので、何とかキャプチャできるはずです。
- どのように考えましたか?
- これを行うためのより良い/標準的な方法はありますか?
- <identity\> 要素を使用する必要がありますか?
私は operationContext.ServiceSecurityContext を使用することに満足していますが、クライアント側で設定する方法と、カスタム ライセンス キーを配置する場所がわかりません。
複数のエンドポイントがあるため、ライセンス キーを 1 か所に保管したいと考えています。コードから設定するとさらに良いでしょう。
ありがとう