私はいくつかの外部サービスを使用するASP.NET MVCアプリケーションを使用しています。プログラムでWCFサービスエンドポイントを変更した後のセキュリティ設定を維持する
私たちは、この方法で、web.configファイル内の各サービスにエンドポイントを定義します。
<endpoint address="http://tempuri.org/myExternalServiceEndPointAddress"
binding="basicHttpBinding" bindingConfiguration="myExternalServiceBinding" contract="myExternalServiceContract" name="MyExternalServiceName">
<headers>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>myUsername</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">myPassword</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</headers>
</endpoint>
本番環境への切り替え時に今、私たちのように、特定のサービスを通じて、実際のエンドポイントURLを発見しました彼らは警告なしに変更することができます。新しいエンドポイントが見つかったら、我々はこれで任意のメソッド呼び出しを実行する前に、エンドポイントURLを変更します。
myserviceClientObject.Endpoint.Address = new EndpointAddress(newEndpointUrl);
我々はこれを行うと、メソッドの呼び出しが正しくnewEndpointUrlで取り組まれているが、コールはどこ検証ヘッダーノードを失いました含まれています。
我々は(我々はエンドポイントを変更するまで、前のものは完全に働いたが)しかし、サービスはこの認証を認識しているようだしない
myServiceClientObject.ClientCredentials.Username.Username = myUsername;
myServiceClientObject.ClientCredentials.Username.Password = myPassword;
を通じてプログラム的に認証を追加しようとしました。
洞察力や提案は非常に高く評価されます。
エンドポイントが変更されるのはなぜですか?確かに別のサービスからの動的な応答、それの妥当性を保証できますか?あなたが持っている実際の問題に関しては、エンドポイントの設定に関連するwsse名前空間の参照は何ですか?私はちょうど "ClientCredentials"の部分を使用して十分ではないかもしれないと思う(あなたはセキュリティのパスワードの部分に特別なタイプがあります) –