QNetworkAccessManager は、
authenticationRequired (QNetworkReply*, QAuthenticator*)
認証が必要な場合に通知します。これは、基本認証に使用できます。
しかし、サーバーで NTLM 認証を行う Qt プログラムを作成するにはどうすればよいでしょうか。この例はどこにも見つかりませんでした。
これを Qt 4.8 で動作させることはできませんでしたが、Qt 5.1 ではある程度動作します。この場合、QAuthenticator は非常にうまく機能しません。authenticationRequired シグナルを処理するスロットにユーザー名とパスワードを手動で設定する場合:
onAuthenticationRequired (QNetworkReply*, QAuthenticator* auth)
{
auth->setUser("username");
auth->setPassword("password");
}
ただし、現在の Windows ユーザー ログインを使用する場合は、ユーザー名を空の文字列として設定する必要があります。
onAuthenticationRequired (QNetworkReply*, QAuthenticator* auth)
{
auth->setUser("");
}
注:このスロットは、Windows ユーザーにアクセス権が付与されている場合でも 4 回呼び出されます。ユーザーが資格情報を提供することになっている場合、これは特にイライラします。さらに、QAuthenticator は、実際に使用されている認証方法を特定するためのパブリック メソッドを提供しません。