System.Net.SSPIWrapper.AcquireCredentialsHandle C# (CSharp) Method

AcquireCredentialsHandle() public static method

public static AcquireCredentialsHandle ( System.Net.Security.SSPIInterface secModule, string package, System.Net.Interop intent, System.Net.Interop &authdata ) : SafeFreeCredentials
secModule System.Net.Security.SSPIInterface
package string
intent System.Net.Interop
authdata System.Net.Interop
return SafeFreeCredentials
        public static SafeFreeCredentials AcquireCredentialsHandle(SSPIInterface secModule, string package, Interop.SspiCli.CredentialUse intent, ref Interop.SspiCli.SEC_WINNT_AUTH_IDENTITY_W authdata)
        {
            if (NetEventSource.IsEnabled)
            {
                NetEventSource.Enter(null, package);
                NetEventSource.Log.AcquireCredentialsHandle(package, intent, authdata);
            }

            SafeFreeCredentials credentialsHandle = null;
            int errorCode = secModule.AcquireCredentialsHandle(package,
                                                               intent,
                                                               ref authdata,
                                                               out credentialsHandle);

            if (errorCode != 0)
            {
                if (NetEventSource.IsEnabled) NetEventSource.Error(null, SR.Format(SR.net_log_operation_failed_with_error, nameof(AcquireCredentialsHandle), $"0x{errorCode:X}"));

                throw new Win32Exception(errorCode);
            }
            return credentialsHandle;
        }

Same methods

SSPIWrapper::AcquireCredentialsHandle ( System.Net.Security.SSPIInterface secModule, string package, System.Net.Interop intent, SafeSspiAuthDataHandle &authdata ) : SafeFreeCredentials

Usage Example

 //
 // Security: we temporarily reset thread token to open the handle under process account.
 //
 private static SafeFreeCredentials AcquireCredentialsHandle(Interop.Secur32.CredentialUse credUsage, Interop.Secur32.SecureCredential secureCredential)
 {
     // First try without impersonation, if it fails, then try the process account.
     // I.E. We don't know which account the certificate context was created under.
     try
     {
         //
         // For app-compat we want to ensure the credential are accessed under >>process<< acount.
         //
         return(WindowsIdentity.RunImpersonated <SafeFreeCredentials>(SafeAccessTokenHandle.InvalidHandle, () => {
             return SSPIWrapper.AcquireCredentialsHandle(GlobalSSPI.SSPISecureChannel, SecurityPackage, credUsage, secureCredential);
         }));
     }
     catch
     {
         return(SSPIWrapper.AcquireCredentialsHandle(GlobalSSPI.SSPISecureChannel, SecurityPackage, credUsage, secureCredential));
     }
 }
All Usage Examples Of System.Net.SSPIWrapper::AcquireCredentialsHandle