public CredentialResult(string userName, string password, string domain, CredentialSaveOption credentialSaved) { UserName = userName; Password = password; Domain = domain; CredentialSaved = credentialSaved; }
// Display the sign in dialog and create a credential private async Task<Credential> SignInDialogCreateCredentialAsync(CredentialRequestInfo credentialRequestInfo) { Credential credential = await _signInDialog.CreateCredentialAsync(credentialRequestInfo); if (AllowSaveCredentials && _signInDialog.CredentialSaveOption != CredentialSaveOption.Unselected) CredentialManager.AddCredential(credential); CredentialSaveOption = _signInDialog.CredentialSaveOption; // so a custom component can use it return credential; }
public static CredentialResult PromptForCredentials(IntPtr owner = default, string messageText = null, string captionText = null, string userName = null, CredentialSaveOption saveCredential = CredentialSaveOption.Unselected) { var credUI = new CredentialUIInfo { hwndParent = owner, pszMessageText = messageText, pszCaptionText = captionText, hbmBanner = IntPtr.Zero, }; var save = saveCredential == CredentialSaveOption.Selected ? true : false; // Setup the flags and variables credUI.cbSize = Marshal.SizeOf(credUI); var errorcode = 0; uint authPackage = 0; var outCredBuffer = IntPtr.Zero; var flags = PromptForWindowsCredentialsFlags.GenericCredentials | PromptForWindowsCredentialsFlags.EnumerateCurrentUser; if (saveCredential != CredentialSaveOption.Hidden) { flags |= PromptForWindowsCredentialsFlags.ShowCheckbox; } // Prefill username GetInputBuffer(userName, out var inCredBuffer, out var inCredSize); // Setup the flags and variables var result = Credui.CredUIPromptForWindowsCredentials(ref credUI, errorcode, ref authPackage, inCredBuffer, inCredSize, out outCredBuffer, out var outCredSize, ref save, flags); FreeCoTaskMem(inCredBuffer); if (result == 0 && GetCredentialsFromOutputBuffer(outCredBuffer, outCredSize, out userName, out var password, out var domain)) { var credentialSaved = saveCredential == CredentialSaveOption.Hidden ? CredentialSaveOption.Hidden : (save ? CredentialSaveOption.Selected : CredentialSaveOption.Unselected); return(new CredentialResult(userName, password, domain, credentialSaved)); } return(null); }
public static CredentialResult PromptForCredentialsConsole(string target, string userName = null, CredentialSaveOption saveCredential = CredentialSaveOption.Unselected) { var userId = new StringBuilder(Credui.CREDUI_MAX_USERNAME_LENGTH); var userPassword = new StringBuilder(Credui.CREDUI_MAX_USERNAME_LENGTH); if (!string.IsNullOrEmpty(userName)) { userId.Append(userName); } var save = saveCredential == CredentialSaveOption.Selected ? true : false; var flags = CredentialUIFlags.CompleteUsername | CredentialUIFlags.ExcludeCertificates | CredentialUIFlags.GenericCredentials; if (saveCredential == CredentialSaveOption.Unselected) { flags |= CredentialUIFlags.ShowSaveCheckBox | CredentialUIFlags.DoNotPersist; } else if (saveCredential == CredentialSaveOption.Selected) { flags |= CredentialUIFlags.ShowSaveCheckBox | CredentialUIFlags.Persist; } else { flags |= CredentialUIFlags.DoNotPersist; } var returnCode = Credui.CredUICmdLinePromptForCredentials(target, IntPtr.Zero, 0, userId, userId.Capacity, userPassword, userPassword.Capacity, ref save, flags); var userBuilder = new StringBuilder(Credui.CREDUI_MAX_USERNAME_LENGTH); var domainBuilder = new StringBuilder(Credui.CREDUI_MAX_USERNAME_LENGTH); var credentialSaved = saveCredential == CredentialSaveOption.Hidden ? CredentialSaveOption.Hidden : (save ? CredentialSaveOption.Selected : CredentialSaveOption.Unselected); returnCode = Credui.CredUIParseUserName(userId.ToString(), userBuilder, userBuilder.Capacity, domainBuilder, domainBuilder.Capacity); switch (returnCode) { case CredentialUIReturnCodes.Success: return(new CredentialResult( userBuilder.ToString(), userPassword.ToString(), domainBuilder.ToString(), credentialSaved)); case CredentialUIReturnCodes.InvalidAccountName: return(new CredentialResult( userId.ToString(), userPassword.ToString(), null, credentialSaved)); case CredentialUIReturnCodes.InsufficientBuffer: throw new OutOfMemoryException(); case CredentialUIReturnCodes.InvalidParameter: throw new ArgumentException(); default: throw new ArgumentOutOfRangeException(); } }
public static CredentialResult PromptForCredentialsConsole(string target, string?userName = null, CredentialSaveOption saveCredential = CredentialSaveOption.Unselected) { var userId = new StringBuilder(Credui.CREDUI_MAX_USERNAME_LENGTH); var userPassword = new StringBuilder(Credui.CREDUI_MAX_USERNAME_LENGTH); if (!string.IsNullOrEmpty(userName)) { userId.Append(userName); } var save = saveCredential == CredentialSaveOption.Selected; var flags = CredentialUIFlags.CompleteUsername | CredentialUIFlags.ExcludeCertificates | CredentialUIFlags.GenericCredentials; if (saveCredential == CredentialSaveOption.Unselected) { flags |= CredentialUIFlags.ShowSaveCheckBox | CredentialUIFlags.DoNotPersist; } else if (saveCredential == CredentialSaveOption.Selected) { flags |= CredentialUIFlags.ShowSaveCheckBox | CredentialUIFlags.Persist; } else { flags |= CredentialUIFlags.DoNotPersist; } _ = Credui.CredUICmdLinePromptForCredentialsW(target, IntPtr.Zero, 0, userId, userId.Capacity, userPassword, userPassword.Capacity, ref save, flags); var userBuilder = new StringBuilder(Credui.CREDUI_MAX_USERNAME_LENGTH); var domainBuilder = new StringBuilder(Credui.CREDUI_MAX_USERNAME_LENGTH); var credentialSaved = saveCredential == CredentialSaveOption.Hidden ? CredentialSaveOption.Hidden : (save ? CredentialSaveOption.Selected : CredentialSaveOption.Unselected); var returnCode = Credui.CredUIParseUserName(userId.ToString(), userBuilder, userBuilder.Capacity, domainBuilder, domainBuilder.Capacity); return(returnCode switch { CredentialUIReturnCodes.Success => new CredentialResult(userBuilder.ToString(), userPassword.ToString(), domainBuilder.ToString(), credentialSaved), CredentialUIReturnCodes.InvalidAccountName => new CredentialResult(userId.ToString(), userPassword.ToString(), domain: null, credentialSaved), CredentialUIReturnCodes.InsufficientBuffer => throw new Win32Exception((int)returnCode, "Insufficient buffer"), CredentialUIReturnCodes.InvalidParameter => throw new Win32Exception((int)returnCode, "Invalid parameter"), _ => throw new Win32Exception((int)returnCode), });