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.
|
|
#ifndef _CUSTOMPROVIDER_HXX_
#define _CUSTOMPROVIDER_HXX_
class CUSTOM_USER_CONTEXT : public W3_USER_CONTEXT { public:
CUSTOM_USER_CONTEXT( AUTH_PROVIDER * pProvider ) : W3_USER_CONTEXT( pProvider ), _hImpersonationToken( NULL ), _hPrimaryToken( NULL ), _dwAuthType( 0 ) { }
virtual ~CUSTOM_USER_CONTEXT() { if ( _hImpersonationToken != NULL ) { CloseHandle( _hImpersonationToken ); _hImpersonationToken = NULL; } if ( _hPrimaryToken != NULL ) { CloseHandle( _hPrimaryToken ); _hPrimaryToken = NULL; } } HRESULT Create( HANDLE hImpersonationToken, BYTE * pszUserName, BOOL fIsUnicode, DWORD dwAuthType ); WCHAR * QueryUserName( VOID ) { return _strUserName.QueryStr(); } WCHAR * QueryPassword( VOID ) { return L""; } DWORD QueryAuthType( VOID ) { return _dwAuthType; } HANDLE QueryImpersonationToken( VOID ) { return _hImpersonationToken; } HANDLE QueryPrimaryToken( VOID ); PSID QuerySid( VOID ) { return NULL; }
private:
HANDLE _hImpersonationToken; HANDLE _hPrimaryToken; DWORD _dwAuthType; STRU _strUserName; CSpinLock _Lock; };
class CUSTOM_AUTH_PROVIDER : public AUTH_PROVIDER { public:
CUSTOM_AUTH_PROVIDER() { } virtual ~CUSTOM_AUTH_PROVIDER() { } HRESULT Initialize( DWORD dwInternalId ) { SetInternalId( dwInternalId ); return NO_ERROR; } VOID Terminate( VOID ) { } HRESULT DoesApply( W3_MAIN_CONTEXT * pMainContext, BOOL * pfApplies ) { UNREFERENCED_PARAMETER( pMainContext ); UNREFERENCED_PARAMETER( pfApplies );
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED ); } HRESULT DoAuthenticate( W3_MAIN_CONTEXT * pMainContext, BOOL * pfFilterFinished ) { UNREFERENCED_PARAMETER( pMainContext ); UNREFERENCED_PARAMETER( pfFilterFinished );
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED ); } HRESULT OnAccessDenied( W3_MAIN_CONTEXT * pMainContext ) { //
// No headers for anonymous
//
UNREFERENCED_PARAMETER( pMainContext ); return NO_ERROR; } DWORD QueryAuthType( VOID ) { return MD_AUTH_ANONYMOUS; } };
#endif
|