ヘルプ!:) 私は次の作業をしようとしている問題の終わりがありません (私が正確に正しい用語を使用していない場合は、事前に謝罪してください) :)
SAML 2 ポリシーで保護された Weblogic Web サービスと通信する .NET Web アプリケーション (クライアント) を取得する必要があります。.NET 3.5/4 を使用する必要があるという制限があり、SAML2 トークンを生成するように構成された ADFS2 を操作するために WIF (拡張機能付き) を使用しています。
ウェブサイト -> adfs2 -> SAML2 トークン ビットはこれまでのところ正常に動作しています - 確実にトークンを取得しています。
追加 (1) - Weblogic サービスは、sender-vouches 確認メソッドを実装する SAML2 ポリシーを使用する必要があります。ADFS 2 はデフォルトでベアラーを提供しますが、トークンをネットワーク経由でサービスに送信する前に、SAML アサーションを操作できます ( s)。
追加 (2) - さまざまな理由から、SSL 経由で Web サービスにアクセスできず、basicHTTPBinding が唯一の選択肢です。
今問題..リクエストでトークンを送信するような方法でWeblogicと通信できません(リクエストに有効なセキュリティヘッダーがないため、ログに記録された試行はすべてオラクルの「一般的なWebサービスセキュリティエラー」を返します)。推奨されるアプローチは、チャネル ファクトリを使用する WCF 経由です。以下のコードは、私が試したものの大まかな例です。クレーム ID/トークンは、WIF 拡張機能に付属のコード サンプルから取得したものです。
IClaimsIdentity identity = Thread.CurrentPrincipal.Identity as IClaimsIdentity;
Saml2SecurityToken token = identity.BootstrapToken as Saml2SecurityToken;
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.None;
binding.Security.Transport.ClientCredentialType = HttpClientCredntialType.None;
EndpointAddress address = new EndpointAddress("http://someaddress");
ChannelFactory<weblogicService.MyService> factory = new ChannelFactory<weblogicService.MyService>(binding,address);
factory.ConfigureChannelFactory<weblogicService.MyService>();
factory.Credentials.SupportInteractive = false;
weblogicService.MyService proxy = factory.CreateChannelWithIssuedToken<weblogicService.MyService>(token)
proxy.DoSomething();
次の投稿 (および私が見つけた他のすべての場所) の答え: WCF と WebLogic SAML 相互運用
..まさに私がやっていることです-しかし、WireSharkでトラフィックを表示するか、顧客のMessageInspectorを実装して「BeforeSendRequest」でリクエストを見るかどうかにかかわらず、トークンの兆候は見られません(リクエストは次のように拒否されます)結果)。
また、トークンを操作して送信者保証を含めるか、そのままにしておくかは問題ではありません。
追加 (3): ADFS2/SAML/WIF/WCF などを使用しない場合、Weblogic サービスと正常に通信できましたが、代わりに、より基本的な WSE2.0/3.0 Web 参照アプローチ (つまり、作成SoapRequest、UserName トークンなど)
問題は、ユーザーの操作なしで有効なユーザー名とパスワードを提供することです。つまり、「SSO アプローチ」を維持し、フォーム認証 (または同等のもの) を実装して毎回ユーザーの資格情報を取得する必要はありません。ADFS によって生成された SecurityToken を WSE で使用する明確な方法はないようです。また..
誰かが光を当てるのを助けることができますか? 提供されたトークンを使用した WCF チャネル ファクトリ アプローチが単に機能しない理由。つまり、デバッグ時に有効なトークンの兆候がなく、Weblogic が有効な SAML トークンを受信していないことは確かです。
また、CustomMessageEncoder ルートに進み、その方法で SAML アサーションを SOAP ヘッダーに追加することも検討しました..しかし、私が見つけたものから、実際にはそれほど難しいことではありません。WCF の何かが壊れていますか?