1
Catch-22は、WIFによってセキュリティ保護可能なストリーミングTCP WCFサービスを防止します。私のクリスマス、メンタルヘルスを台無しにする
WIFを使用してストリーミングされたWCF net.tcpサービスエンドポイントを保護する必要があります。トークンサーバーに対して着信呼び出しを認証する必要があります。このサービスは、大量のデータを転送するように設計されているため、ストリーミングされます。 これは不可能のようです。 そして、もし私が捕まえられない場合、私のクリスマスは台無しになり、陽気な買い物客がゆっくりと冷えている体の上を歩き回る間、私は雨どいの中で自分を飲み殺してしまいます。トート深刻です、皆さん。 なぜこれが不可能なのですか?これがCatch-22です。 クライアントでは、トークンサーバーから取得したGenericXmlSecurityTokenを使用してチャネルを作成する必要があります。問題ありません。 // people around here hate the Framework Design Guidelines. var token = Authentication.Current._Token; var service = base.ChannelFactory.CreateChannelWithIssuedToken(token); return service.Derp(); 「問題ありません」と言いましたか?問題。実際には、NullReferenceExceptionスタイルの問題。 「ブロ、」私はフレームワークに尋ねました、「ヌルチェックすらしますか?」フレームワークはサイレントだったので、分解してみた ((IChannel)(object)tChannel). GetProperty<ChannelParameterCollection>(). Add(federatedClientCredentialsParameter); 例外の原因であり、GetProperty呼び出しが返されていたnull。それで、WTF?メッセージセキュリティをオンにして、クライアントの資格情報の種類をに設定するとIssuedToken、このプロパティがに存在することがClientFactoryわかります(ヒント:IChannelには同等の "SetProperty"はありません)。 <binding name="OMGWTFLOL22" transferMode="Streamed" > <security mode="Message"> <message clientCredentialType="IssuedToken"/> </security> </binding> 甘い。NREはもうありません。しかし、今私のクライアントは出生時に失敗しています(まだ彼を愛しています、tho)。WCF診断を掘り下げて(ヒント:最悪の敵を粉砕し、運転する前に運転して、女性と子供の悲嘆を楽しむ直前に)、サーバーとクライアント間のセキュリティの不一致が原因であると思います。 要求されたアップグレードは 'net.tcp:// localhost:49627 / MyService'ではサポートされていません。これは、バインディングの不一致が原因である可能性があります(たとえば、サーバーではなくクライアントでセキュリティが有効になっている)。 ホストの診断をチェックします(ここでも、クラッシュ、ドライブ、ログの読み取り、嘆きをお楽しみください)。これは本当です。 プロトコルタイプapplication …
181
c#
wcf
.net-4.5
wif
nettcpbinding