Wachtwoord vergeten?

Wachtwoord vergeten
Vul hier uw email adres in. U ontvangt dan een nieuw wachtwoord.

BUG: Proxyverificatie via IAuthenticate mislukt op beveiligde URL

Gepost op 25-12-2006 - Internet Explorer - 0 reacties


De informatie in dit artikel is van toepassing op:

  • Microsoft Internet Explorer 6.0 Service Pack 1

Belangrijk De hotfix die in dit artikel wordt beschreven, is vervangen door de Critical Update 813951. Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie over deze update:

813951U krijgt geen toegang tot uw MSN-e-mailaccount of u kunt niet verifiëren bij een website in diverse programma's

Symptomen

Wanneer u in een host met een webbrowserbesturingselement voor het eerst naar een beveiligde URL navigeert via een proxyserver waarvoor verificatie vereist is en u de verificatiereferenties opgeeft via de interface IAuthenticate, wordt een foutbericht weergegeven dat de pagina niet is gevonden. Belangrijke opmerking

813951

Deze hotfix bevat een fout die u kunt deze oplossen met behulp van het volgende artikel in de Microsoft Knowledge Base: 813951 - BUG: Proxy Authentication Through IAuthenticate May Fail on Secure URL.

Oplossing

Microsoft heeft nu een ondersteunde hotfix voor dit probleem beschikbaar gesteld. Deze hotfix is echter alleen bedoeld om het probleem te verhelpen dat in dit artikel wordt beschreven. Voer de hotfix alleen uit op systemen waarop dit specifieke probleem zich voordoet. Deze hotfix moet wellicht extra worden getest. Als u geen ernstige hinder van dit probleem ondervindt, raadt Microsoft u daarom aan te wachten op het volgende servicepack voor Internet Explorer 6,0 waarin deze hotfix is opgenomen.

Als u dit probleem direct wilt verhelpen, kunt u contact opnemen met Microsoft Product Support Services om de correctie te verkrijgen. Een volledige lijst met telefoonnummers van Microsoft Product Support Services en informatie over kosten van ondersteuning vindt u op de volgende Microsoft-website: Opmerking In speciale gevallen kunnen kosten die normaal verbonden zijn aan ondersteuningsoproepen, worden geannuleerd als een medewerker van Microsoft Product Support Services van mening is dat een specifieke update de oplossing van uw probleem is. De normale ondersteuningskosten blijven gelden voor extra ondersteuningsvragen die niet in aanmerking komen voor de specifieke update in kwestie.

De Engelse versie van deze correctie heeft de bestandskenmerken die in de volgende tabel worden weergegeven (of recentere kenmerken). De datums en tijden voor deze bestanden worden weergegeven in UTC-notatie (Coordinated Universal Time). Wanneer u de bestandsinformatie weergeeft, wordt deze naar lokale tijd geconverteerd. Als u het verschil tussen UTC en lokale tijd wilt bepalen, gebruikt u het tabblad Tijdzone van de optie Datum en tijd in het Configuratiescherm.
Datum Tijd Versie Grootte Bestandsnaam --------------------------------------------------------- 19-nov-2002 23:22:38 6.0.2800.1139 483.328 Urlmon.dll

Status

Microsoft heeft bevestigd dat deze fout zich kan voordoen in de Microsoft-producten die aan het begin van dit artikel worden vermeld.

Meer informatie

Deze fout treedt op omdat de proxyverificatiegegevens niet correct in het cachegeheugen worden opgeslagen wanneer ze onder deze omstandigheden via een beveiligde verbinding worden verzonden.

Het probleem reproduceren

  1. Stel een proxyserver in.
  2. Maak een testaccountnaam en maak vervolgens een wachtwoord met de machtiging om de proxyserver te gebruiken.
  3. Maak een Microsoft Foundation Classes (MFC)-klassetoepassing van het type CHtmlView en implementeer de interfaces IAuthenticate en IServiceProvider in een site met aangepaste besturingselementen. Via de interface IServiceProvider kan het besturingselement van de webbrowser de interface IAuthenticate ontdekken.

    De volgende voorbeeldcode is specifiek voor Microsoft Foundation Classes 7.0:

    MyOleControlSite.h
    #include <afxocc.h>#include <afxhtml.h>
    class CHtmlControlSite: public COleControlSite{public: CHtmlControlSite(COleControlContainer* pParentWnd); ~CHtmlControlSite();
    CHtmlView* GetView() const;
    BEGIN_INTERFACE_PART(DocHostUIHandler, IDocHostUIHandler) STDMETHOD(ShowContextMenu)(DWORD, LPPOINT, LPUNKNOWN, LPDISPATCH); STDMETHOD(GetHostInfo)(DOCHOSTUIINFO*); STDMETHOD(ShowUI)(DWORD, LPOLEINPLACEACTIVEOBJECT, LPOLECOMMANDTARGET, LPOLEINPLACEFRAME, LPOLEINPLACEUIWINDOW); STDMETHOD(HideUI)(void); STDMETHOD(UpdateUI)(void); STDMETHOD(EnableModeless)(BOOL); STDMETHOD(OnDocWindowActivate)(BOOL); STDMETHOD(OnFrameWindowActivate)(BOOL); STDMETHOD(ResizeBorder)(LPCRECT, LPOLEINPLACEUIWINDOW, BOOL); STDMETHOD(TranslateAccelerator)(LPMSG, const GUID*, DWORD); STDMETHOD(GetOptionKeyPath)(OLECHAR **, DWORD); STDMETHOD(GetDropTarget)(LPDROPTARGET, LPDROPTARGET*); STDMETHOD(GetExternal)(LPDISPATCH*); STDMETHOD(TranslateUrl)(DWORD, OLECHAR*, OLECHAR **); STDMETHOD(FilterDataObject)(LPDATAOBJECT , LPDATAOBJECT*); END_INTERFACE_PART(DocHostUIHandler)
    DECLARE_INTERFACE_MAP()};
    class CMyOleControlSite: public CHtmlControlSite{public: CMyOleControlSite(COleControlContainer *pCnt = NULL):CHtmlControlSite(pCnt) {}
    BEGIN_INTERFACE_PART(Authenticate, IAuthenticate)
    STDMETHODIMP Authenticate( HWND __RPC_FAR *phwnd, LPWSTR __RPC_FAR *pszUsername, LPWSTR __RPC_FAR *pszPassword);
    END_INTERFACE_PART(Authenticate)
    BEGIN_INTERFACE_PART(ServiceProvider, IServiceProvider) STDMETHODIMP QueryService(REFGUID guid, REFIID iid, LPVOID * ppv); END_INTERFACE_PART(ServiceProvider)
    DECLARE_INTERFACE_MAP();};

    MyOleControlSite.cpp
    #include "stdafx.h"#include "MyOleControlSite.h"
    BEGIN_INTERFACE_MAP(CMyOleControlSite, CHtmlControlSite) INTERFACE_PART(CMyOleControlSite, IID_IAuthenticate, Authenticate) INTERFACE_PART(CMyOleControlSite, IID_IServiceProvider, ServiceProvider)END_INTERFACE_MAP()
    ///////////////////////////////////////////////////////////////////////////// // CMyOleControlSite: IAthenticate::IUnknown methods
    ULONG CMyOleControlSite::XAuthenticate::AddRef(){ METHOD_PROLOGUE(CMyOleControlSite, Authenticate) return pThis->ExternalAddRef();}
    ULONG CMyOleControlSite::XAuthenticate::Release(){ METHOD_PROLOGUE(CMyOleControlSite, Authenticate) return pThis->ExternalRelease();}
    HRESULT CMyOleControlSite::XAuthenticate::QueryInterface(REFIID riid, void **ppvObj){ METHOD_PROLOGUE(CMyOleControlSite, Authenticate) HRESULT hr = (HRESULT)pThis->ExternalQueryInterface(&riid, ppvObj); return hr;}
    ///////////////////////////////////////////////////////////////////////////// // CMyOleControlSite: Verificatiemethoden
    STDMETHODIMP CMyOleControlSite::XAuthenticate::Authenticate( HWND __RPC_FAR *phwnd, LPWSTR __RPC_FAR *pszUsername, LPWSTR __RPC_FAR *pszPassword){ METHOD_PROLOGUE(CMyOleControlSite, Authenticate)
    // voeg code uit de volgende stap toe
    return S_OK;}
    // // IServiceProvider//
    ULONG CMyOleControlSite::XServiceProvider::AddRef(){ METHOD_PROLOGUE(CMyOleControlSite, ServiceProvider) return pThis->ExternalAddRef();}
    ULONG CMyOleControlSite::XServiceProvider::Release(){ METHOD_PROLOGUE(CMyOleControlSite, ServiceProvider) return pThis->ExternalRelease();}
    HRESULT CMyOleControlSite::XServiceProvider::QueryInterface(REFIID riid, void **ppvObj){ METHOD_PROLOGUE(CMyOleControlSite, ServiceProvider) HRESULT hr = (HRESULT)pThis->ExternalQueryInterface(&riid, ppvObj); return hr;}
    STDMETHODIMP CMyOleControlSite::XServiceProvider::QueryService(REFGUID sid, REFIID iid, LPVOID * ppv){ METHOD_PROLOGUE(CMyOleControlSite, ServiceProvider)
    if (sid == IID_IAuthenticate || iid == IID_IAuthenticate) { return (HRESULT)pThis->ExternalQueryInterface(&iid, ppv); } else { *ppv = NULL; } return E_NOINTERFACE;}

    ProxyTestView.h
    class CProxyTestView: public CHtmlView{... BOOL CreateControlSite(COleControlContainer* pContainer, COleControlSite** ppSite, UINT nID, REFCLSID clsid);
    ProxyTestView.cpp
    BOOL CProxyTestView::CreateControlSite(COleControlContainer* pContainer, COleControlSite** ppSite, UINT nID, REFCLSID clsid){ ASSERT(ppSite != NULL); *ppSite = new CMyOleControlSite(pContainer); return TRUE;}
  4. Geef in de implementatie van de interface IAuthenticate een gebruikersnaam en wachtwoord op, zoals aangegeven in het onderstaande voorbeeld:
    STDMETHODIMP CMyOleControlSite::XAuthenticate::Authenticate( HWND __RPC_FAR *phwnd, LPWSTR __RPC_FAR *pszUsername, LPWSTR __RPC_FAR *pszPassword){ METHOD_PROLOGUE(CMyOleControlSite, Authenticate)
    CString strUsername = "Altoid/LocalAltoid"; CString strPassword = "Test123"; WCHAR *wszDlgUser = (WCHAR *) CoTaskMemAlloc(255 * sizeof(WCHAR)); WCHAR *wszDlgPassword = (WCHAR *) CoTaskMemAlloc(255 * sizeof(WCHAR)); MultiByteToWideChar(GetACP(), 0, (const char*)strUsername, -1, wszDlgUser, 255); MultiByteToWideChar(GetACP(), 0, (const char*)strPassword, -1, wszDlgPassword, 255); *pszUsername = wszDlgUser; *pszPassword = wszDlgPassword; *phwnd = NULL;
    return S_OK;}

  5. Ga vanuit de functie OnInitialUpdate naar de pagina 'about:blank':
    void CProxyTestView::OnInitialUpdate(){ CHtmlView::OnInitialUpdate(); Navigate2(_T("about:blank"),NULL,NULL);}
  6. Voeg een menuoptie en vervolgens een handler toe om naar een beveiligde URL te gaan, zoals aangegeven in het onderstaande voorbeeld:
    void CProxyTestView::OnActionTest(){ Navigate2(_T("https://www.etrade.com"),NULL,NULL);}
  7. Maak een build en test het project. U ziet dat de pagina niet gevonden wordt. Als u de pagina zodanig wijzigt dat deze naar een niet-beveiligde URL gaat, of als u de beveiligde URL bezoekt nadat u de niet-beveiligde URL hebt bezocht, lukt dit wel.

Referenties

Klik voor meer informatie op het volgende artikelnummer in de Microsoft Knowledge Base:

320153BUG: Implementatie van IAuthenticate om dialoogvenster Gebruikersnaam of Wachtwoord over te slaan

Meer informatie over de klasse COleControlSite vindt u op de volgende Microsoft Developer Network-website:
Meer informatie over de interface IAuthenticate vindt u op de volgende Microsoft Developer Network-website:
Raadpleeg de volgende websites voor meer informatie over het ontwerpen van weboplossingen voor Microsoft Internet Explorer:

PrintPrint RSS reactiesRSS reacties BookmarkBookmark

Gekoppelde tags

Cache, DLL, Filter, Fix, Foutbericht, Internet Explorer, Internet Explorer 6, MSN, Patch, Project, Query, Service Pack, Tabel, Update, Wachtwoord, Works

Reacties
Nog geen reacties geplaatst.

Winkelmandje

Het winkelmandje is leeg

Inloggen
Als u hierboven op de knop 'bestellen' klikt krijgt u een overzicht van de door uw gewenste producten. Indien het overzicht compleet en correct is kunt via de wizard de verdere gegevens invullen en uw bestelling afronden. In het bestelproces kunt u altijd op 'vorige' drukken om terug te gaan in het proces. Bij Perrit staan vertrouwen, privacy en veiligheid op de eerste plaats, wij zullen uw gegevens dan ook met uiterste zorgvuldigheid behandelen en nooit doorgeven aan derden.

Perrit.nl Sherwood Rangers 29 Hengelo

Perrit.nl telefoon: +31 74 750 12 20

Kenniscentrum - BUG: Proxyverificatie via IAuthenticate mislukt op beveiligde URL
Perrit Kenniscentrum - BUG: Proxyverificatie via IAuthenticate mislukt op beveiligde URL