1

これらをuses句に含めています

  IdAuthentication
  ,
  IdAuthenticationDigest
  ,
  IdAuthenticationNTLM
  ,
  IdAuthenticationSSPI

現在、これを行うコードがあります:

    W.Request.BasicAuthentication := True;
    W.Request.Username := AOptionsPtr^.AuthUsername;
    W.Request.Password := AOptionsPtr^.AuthPassword;

そして、OpenSSL にアクセスできる場合:

    TmpOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create;
    TmpOpenSSL.SSLOptions.Method := sslvSSLv23;
    TmpOpenSSL.SSLOptions.Mode := sslmClient;
    TmpOpenSSL.SSLOptions.VerifyMode := [];
    TmpOpenSSL.SSLOptions.VerifyDepth := 0;
    //--
    W.IOHandler := TmpOpenSSL;

WinINet のドキュメントをざっと読むと (はい、Indy ではないことはわかっています)、認証には永続的な接続も必要なようです。これはインディにも当てはまると思いますか?URL: http://msdn.microsoft.com/en-us/library/windows/desktop/aa384220(v=vs.85).aspx

これを SharePoint で動作させる必要があります。ただし、問題は、テスト対象のイントラネット SharePoint サーバーがないことです。したがって、コードをステップ実行して、何が機能し、何が機能しないかを確認することはできません。ただし、テストしてくれる潜在的な顧客がいます。

上記のコードを Windows 認証 (NTML? SPPI?) を使用して SharePoint で動作させるには、さらに何をする必要がありますか?

Indy は適切な認証を自動的にテストして使用しますか?

W.Request.BasicAuthentication := False;自動認証/検出が機能するように設定する必要がありますか?

複数のリクエストが必要な場合 (最初の応答が 401 の場合)、GET リクエストを作成するときに自分のコードにこれのサポートを追加する必要があると思いますか? (認証モードを設定して新しいリクエストを作成するには?)

4

1 に答える 1

2

Request.Connectionプロパティをに設定することで、持続的接続を要求できます'keep-alive'

TIdHTTPはサーバーのヘッダーをチェックし、それを句に含めたクラスWWW-Authorizationと比較します。イベントは、どのクラスが選択されたかを通知し、必要に応じてそれをオーバーライドできるようにします。認証が失敗し、別の資格情報が必要な場合、イベントがトリガーされます。TIdAthenticationusesTIdHTTP.OnSelectAuthorizationTIdHTTP.OnAuthorization

このBasicAuthrnicationプロパティでは、他のクラスが割り当てられていない場合TIdHTTPにフォールバックできます。TIdBasicAuthenticationTIdAuthentication

いいえ、NTLMのようにマルチリクエスト認証を手動で処理する必要はありません。 TIdHTTPそしてTIdAuthenticationあなたのためにそれらの詳細を処理します。

于 2013-01-25T10:06:17.087 に答える