Added the capability to scope credential store access. This is only allowed by miCASA if the current user is running in the context of system. This is useful to system type applications doing work on behalf of other users.
This commit is contained in:
		| @@ -21,7 +21,7 @@ | ||||
| 				Name="VCCLCompilerTool" | ||||
| 				AdditionalOptions="/D "XML_STATIC"" | ||||
| 				Optimization="0" | ||||
| 				AdditionalIncludeDirectories=".;..\;..\..\include;"\Program Files\novell\casa\include";"C:\Dev\Expat-2.0.0\Source\lib"" | ||||
| 				AdditionalIncludeDirectories=".;..\;..\..\include;"C:\Dev\casa\CASA-auth-token\non-java\include\windows";"\Program Files\novell\casa\include";"C:\Dev\Expat-2.0.0\Source\lib"" | ||||
| 				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" | ||||
| 				MinimalRebuild="TRUE" | ||||
| 				BasicRuntimeChecks="3" | ||||
| @@ -81,7 +81,7 @@ copy $(SolutionDir)client\windows\authtoken.lib \"Program Files"\novel | ||||
| 			<Tool | ||||
| 				Name="VCCLCompilerTool" | ||||
| 				AdditionalOptions="/D "XML_STATIC"" | ||||
| 				AdditionalIncludeDirectories=".;..\;..\..\include;"\Program Files\novell\casa\include";"C:\Dev\Expat-2.0.0\Source\lib"" | ||||
| 				AdditionalIncludeDirectories=".;..\;..\..\include;"C:\Dev\casa\CASA-auth-token\non-java\include\windows";"\Program Files\novell\casa\include";"C:\Dev\Expat-2.0.0\Source\lib"" | ||||
| 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" | ||||
| 				RuntimeLibrary="4" | ||||
| 				UsePrecompiledHeader="0" | ||||
| @@ -188,6 +188,9 @@ copy $(SolutionDir)client\windows\authtoken.lib \"Program Files"\novel | ||||
| 			<File | ||||
| 				RelativePath="..\..\include\casa_c_authtoken.h"> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\..\include\windows\casa_c_authtoken_ex.h"> | ||||
| 			</File> | ||||
| 			<File | ||||
| 				RelativePath="..\config_if.h"> | ||||
| 			</File> | ||||
|   | ||||
| @@ -27,6 +27,7 @@ | ||||
| #include "internal.h" | ||||
| #include <shlobj.h> | ||||
| #include <shlwapi.h> | ||||
| #include "casa_c_authtoken_ex.h" | ||||
|  | ||||
| //===[ External data ]===================================================== | ||||
| extern | ||||
| @@ -49,6 +50,75 @@ HANDLE g_hModule; | ||||
| HANDLE g_hModuleMutex; | ||||
|  | ||||
|  | ||||
| //++======================================================================= | ||||
| CasaStatus SSCS_CALL | ||||
| ObtainAuthTokenEx( | ||||
|    IN    const char *pServiceName, | ||||
|    IN    const char *pHostName, | ||||
|    INOUT char *pAuthTokenBuf, | ||||
|    INOUT int *pAuthTokenBufLen, | ||||
|    IN    void *pCredStoreScope) | ||||
| // | ||||
| //  Arguments:  | ||||
| //    pServiceName - | ||||
| //       Pointer to NULL terminated string that contains the | ||||
| //       name of the service to which the client is trying to | ||||
| //       authenticate. | ||||
| //                | ||||
| //    pHostName - | ||||
| //       Pointer to NULL terminated string that contains the | ||||
| //       name of the host where resides the service to which the | ||||
| //       client is trying to authenticate. Note that the name | ||||
| //       can either be a DNS name or a dotted IP address. | ||||
| //                | ||||
| //    pAuthTokenBuf - | ||||
| //       Pointer to buffer that will receive the authentication | ||||
| //       token. The length of this buffer is specified by the | ||||
| //       pAuthTokenBufLen parameter. Note that the the authentication | ||||
| //       token will be in the form of a NULL terminated string. | ||||
| // | ||||
| //    pAuthTokenBufLen - | ||||
| //       Pointer to integer that contains the length of the | ||||
| //       buffer pointed at by pAuthTokenBuf. Upon return of the | ||||
| //       function, the integer will contain the actual length | ||||
| //       of the authentication token if the function successfully | ||||
| //       completes or the buffer length required if the function | ||||
| //       fails because the buffer pointed at by pAuthTokenBuf is | ||||
| //       not large enough. | ||||
| // | ||||
| //    pCredStoreScope - | ||||
| //       Pointer to CASA structure for scoping credential store access | ||||
| //       to specific users. This can only be leveraged by applications | ||||
| //       running in the context of System. | ||||
| //    | ||||
| // Returns: | ||||
| //    Casa Status | ||||
| //                            | ||||
| // Description: | ||||
| //    Get authentication token to authenticate user to specified | ||||
| //    service at host. The user is scoped using the info associated | ||||
| //    with the magic cookie. | ||||
| // | ||||
| // L2 | ||||
| //=======================================================================-- | ||||
| { | ||||
|    CasaStatus        retStatus; | ||||
|  | ||||
|    DbgTrace(1, "-ObtainAuthTokenEx- Start\n", 0); | ||||
|  | ||||
|    // Call our internal worker | ||||
|    retStatus = ObtainAuthTokenInt(pServiceName, | ||||
|                                   pHostName, | ||||
|                                   pAuthTokenBuf, | ||||
|                                   pAuthTokenBufLen, | ||||
|                                   pCredStoreScope); | ||||
|  | ||||
|    DbgTrace(1, "-ObtainAuthTokenEx- End, retStatus = %08X\n", retStatus); | ||||
|  | ||||
|    return retStatus; | ||||
| } | ||||
|  | ||||
|  | ||||
| //++======================================================================= | ||||
| BOOL APIENTRY DllMain( | ||||
|    HANDLE hModule, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user