Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

138 lines
3.3 KiB

  1. /*++
  2. Copyright (c) 2000 Microsoft Corporation
  3. Module Name:
  4. logon.h
  5. Abstract:
  6. This interface abstracts a Passport Logon Session.
  7. Author:
  8. Biao Wang (biaow) 01-Oct-2000
  9. --*/
  10. #ifndef LOGON_H
  11. #define LOGON_H
  12. class SESSION;
  13. #define MAX_PASSPORT_TIME_SKEW_LENGTH 32
  14. #define MAX_PASSPORT_USERNAME_LENGTH 1024
  15. #define MAX_PASSPORT_PASSWORD_LENGTH 1024
  16. class LOGON
  17. {
  18. public:
  19. LOGON(SESSION*, DWORD dwParentFlags, PCWSTR pwszProxyUser, PCWSTR pwszProxyPass);
  20. virtual ~LOGON(void);
  21. BOOL Open(PCWSTR pwszPartnerInfo);
  22. void Close(void);
  23. BOOL SetCredentials(
  24. PCWSTR pwszRealm,
  25. PCWSTR pwszTarget,
  26. PCWSTR pwszSignIn,
  27. PCWSTR pwszPassword,
  28. PSYSTEMTIME pTimeCredsEntered
  29. );
  30. BOOL GetLogonHost(
  31. PWSTR pwszHostName,
  32. OUT PDWORD pdwHostNameLen
  33. ) const;
  34. DWORD Logon(BOOL fAnonymous);
  35. BOOL GetChallengeInfo(
  36. PBOOL pfPrompt,
  37. PWSTR pwszCbUrl,
  38. PDWORD pdwCbUrlLen,
  39. PWSTR pwszCbText,
  40. PDWORD pdwTextLen,
  41. PWSTR pwszRealm,
  42. DWORD dwMaxRealmLen
  43. ) const;
  44. BOOL GetChallengeContent(
  45. PBYTE pContent,
  46. OUT PDWORD pdwContentLen
  47. ) const;
  48. BOOL GetAuthorizationInfo(
  49. PWSTR pwszTicket, // e.g. "from-PP = ..."
  50. PDWORD pdwTicketLen,
  51. PBOOL pfKeepVerb, // if TRUE, no data will be copied into pwszUrl
  52. PWSTR pwszUrl, // user supplied buffer ...
  53. PDWORD pdwUrlLen // ... and length (will be updated to actual length
  54. // on successful return)
  55. ) const;
  56. VOID StatusCallback(
  57. IN HINTERNET hInternet,
  58. IN DWORD dwInternetStatus,
  59. IN LPVOID lpvStatusInformation,
  60. IN DWORD dwStatusInformationLength);
  61. protected:
  62. void GetCachedCreds(
  63. PCWSTR pwszRealm,
  64. PCWSTR pwszTarget,
  65. PCREDENTIALW** pppCreds,
  66. DWORD* pdwCreds
  67. );
  68. BOOL ParseChallengeInfo(
  69. PWSTR pwszChallenge
  70. );
  71. DWORD Handle401FromDA(
  72. HINTERNET hRequest,
  73. BOOL fTicketRequest
  74. );
  75. DWORD Handle200FromDA(
  76. HINTERNET hRequest
  77. );
  78. void CheckForVersionChange(
  79. HINTERNET hRequest
  80. );
  81. protected:
  82. SESSION* m_pSession;
  83. HINTERNET m_hConnect;
  84. BOOL m_fCredsPresent;
  85. PWSTR m_pwszSignIn;
  86. PWSTR m_pwszPassword;
  87. WCHAR m_wNewDAUrl[MAX_PASSPORT_URL_LENGTH + 1];
  88. PWSTR m_pwszTicketRequest;
  89. PWSTR m_pwszAuthInfo;
  90. PWSTR m_pwszReturnUrl;
  91. // PWSTR m_pwszCbUrl;
  92. BOOL m_fWhistler;
  93. HBITMAP* m_pBitmap;
  94. BOOL m_fPrompt;
  95. WCHAR m_wRealm[MAX_PASSPORT_REALM_LENGTH + 1];
  96. WCHAR m_wTimeSkew[MAX_PASSPORT_TIME_SKEW_LENGTH + 1];
  97. PWSTR m_pwszAuthHeader;
  98. DWORD m_dwParentFlags;
  99. PWSTR m_pwszCbtxt;
  100. WCHAR m_wDAHostName[MAX_PASSPORT_HOST_LENGTH + 1];
  101. LPSTREAM m_p401Content;
  102. SYSTEMTIME m_TimeCredsEntered;
  103. PWSTR m_pwszCbUrl;
  104. PCWSTR m_pwszProxyUser;
  105. PCWSTR m_pwszProxyPass;
  106. };
  107. #endif // LOGON_H