1

私は、ユーザーがログインしてより多くの個人情報を取得できるサイトに取り組んでいます。私のクライアントには、アクセスにnt認証を使用する別のサイトがあります。

彼らがやりたいのはbutton、私が作業しているサイトにプライベートエリアの下にいて、認証されていないサイトに送信することですが、ログインに使用したユーザー名とパスワードを渡す代わり、そのサイトにログオンする必要はありません。彼らのために私のサイトから他のサイトへ。

これを行うことは可能ですか?どうすればそれを達成できますか?これを行うためのより良い方法はありますか?

4

5 に答える 5

1

これは (テストされていない) 理論です。その詳細は、Sharepoint サイトが受け入れる認証の種類に大きく依存します。最も簡単なので、Basicに取り組みます。

XMLHttpRequest を使用して SharePoint サイトに要求を送信する JavaScript を記述し、そのユーザー名とパスワードを要求ヘッダーに追加します。彼らのブラウザはその JavaScript を実行し、Sharepoint サイトにログインします。

これで、リンクをクリックすると、クライアントのブラウザーにはキャッシュされた資格情報があり、Sharepoint サイトに送信されます。

考えられる問題:

  • XMLHttpRequest はクロス ドメイン認証を許可しません
  • ブラウザと XHR は認証情報を共有しません
  • Sharepoint と XHR で認証方法が一致しない

別のオプションは、Sharepoint への接続をプロキシすることです。これにより、サーバー側にログインできますが (XHR の制限とブラウザーのセキュリティをバイパスします)、サーバーに負荷がかかり、URL ターゲットの問題が発生する可能性があります。

于 2008-09-04T21:22:09.607 に答える
0

これはイントラネット環境ですか? もしそうなら、とにかくログインする必要はありません。「統合認証」を使用して sharepoint がセットアップされ、そのサイトが IE で信頼できるサイトとしてリストされている場合、ブラウザは自動ログインにそのネットワーク資格情報を使用します。これは、 Firefoxでもセットアップできます。

于 2008-09-04T21:18:29.630 に答える
0

2 番目のサイトに対して認証する必要がある場合は、新しいスレッドを生成して Windows LogonUser API を呼び出す必要がある場合があります。セキュリティ トークンを取得したら、それを新しいスレッドに割り当て、そのスレッドを介して接続を行います。

LogonUser は強化された特権を必要とし、マネージ コードではないため、これを使用するにはかなり深刻な問題が発生します。しかし、これは、Windows 認証済みサービス/サイトと通信するフォーム認証済みサイトを取得するために私が見つけた唯一の回避策です。

お役に立てれば。

于 2008-09-04T20:58:42.440 に答える
0

ユーザーは、NTLM チャレンジを受けずに NTLM サイトに直接接続することはできません。NTLM サイトへの事実上のプロキシとなるものを書きます。つまり、サーバー側のコードには NTLM サイトに接続するための資格情報があり、ユーザーからの要求を通過します。

あなたが言ったように、それは SharePoint ( spit ) であり、SharePoint には (スクリーンスクレイピングを行うのではなく) これに使用できる Web サービスがたくさんあることに注意してください。

于 2008-09-04T21:29:33.877 に答える
0

他のサイトはユーザー名とパスワードをどのように検証しますか?

理想的には、あなたのサイトは、ユーザーのパスワードを別のサイトに渡すことができるようにするために、ユーザーのパスワードを記憶することさえすべきではありません (パスワード自体ではなく、パスワードのハッシュを保存し、検証中に実際のパスワードのみを使用します)。

あなたのサイトがユーザーにトークンを提供し、ユーザーがそのトークンを新しいサイトに提示すると、サイトはトークンを検証するように求められます。基本的に、2 番目のサイトは、ユーザーが誰であるかを伝えるためにあなたを信頼しています。

このシナリオでは、ユーザーが実際の Windows ユーザー アカウントとしてログオンしていないため、2 番目のサイトがユーザー名を取得する以外の目的 (たとえば、基になるファイルのアクセス許可) に実際に Windows アカウントを使用している場合、これはすべて失敗します。

于 2008-09-04T16:49:51.443 に答える