質問

シナリオ:

私の当面の課題は、異なる組織/Web サイト間のシングル サインオン ソリューションを有効にすることです。ある組織の Web サイトで認証済みユーザーとして開始し、特定の情報を XML ドキュメントに変換し、トリプル des でドキュメントを暗号化し、それを post 変数として 2 番目の組織のログイン ページに送信します。

質問:

XML データをパッケージ化したら、プログラムで 2 番目の Web サイトへの投稿を実行し、ユーザーのブラウザーも 2 番目の Web サイトにリダイレクトするにはどうすればよいですか。

これは、次のようなフォームを持つのと同じように動作するはずです。

アクション = "http://www.www.com/postthere" メソッド = "投稿"

...そして次のような隠しテキストフィールドがあります:

input type="hidden" value="暗号化された XML"

これはasp.net 2.0 Webフォームで書かれています。

--

編集: Nic は、上で説明した HTML フォームがなぜ機能しないのかを尋ねました。答え:私はどちらのサイトも制御できません。私はこれらすべてを実現する「仲介者」を構築しています。サイト 1 は私が作成しているページにユーザーを転送しています。XML を構築してからサイト 2 に転送する必要があります。サイト 1 はユーザーに私のサイトのことを知られたくないので、リダイレクトは透過的である必要があります。

上で説明したプロセスは、両当事者 (サイト A とサイト B) が義務付けるものです。

役に立ちましたか?

解決

非表示の入力を含む from を含むドキュメントを送り返し、フォームをすぐに他のサイトにポストする onload ハンドラーを含めます。jquery の document.ready() を使用すると、ポストが行われる前に DOM がロードされるかどうかの問題が解決されますが、jquery を使用せずにこれを行う方法は他にもあります。ユーザーがすぐにリダイレクトされるという趣旨の小さなメッセージを画面に表示し、投稿も行うリンクを提供するとよいでしょう。

...headers left out...

<script type='text/javascript'>

$(document).ready( function() {
   $('form:first').submit();
 });
</script>

<body>
   <form action='othersiteurl' method='POST'>
       <input type='hidden' value='your-encrypted-xml" />
   </form>
</body>

他のヒント

これもプロセス指向であると考えています。すべてのバグと可動部分をあなたが提案したもので解決しようとすると、1か月ほどかかります。

すでに別のサーバーへの投稿を行っているため、実際には何もする必要はありません。あなたが持っているフォームはすでに完璧であり、他のサーバーがリクエストをインターセプトするとき、つまり、ユーザーをサイトに入れて続行するか、ヘッダーのリファラー(sic)にリダイレクトするかを決定するときです。リファラーにリダイレクトするとき、彼らは?error = no_auth

のような何が間違っていたかを伝えるメッセージにタックしたいかもしれません

しばらく前に別の質問のためにこれについて書いた。これが役に立てば幸いです:

認証済みセッションを渡す方法アプリドメイン間

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top