mirror of
https://github.com/bitwarden/browser
synced 2025-12-13 23:03:32 +00:00
* [PM-11419] Login items do not display after adding passkey * [PM-11419] Login items do not display after adding passkey * [PM-11419] Incorporating fixes for deleting a cipher from the inline menu as well as authenticating using passkeys * [PM-11419] Fixing an issue where master password reprompt is ignored for a set passkey cipher * [PM-11419] Fixing an issue where saving a passkey does not trigger a clearing of cached cipher values * [PM-11419] Refactoring implementation * [PM-11419] Ensuring that passkeys must be enabled in order for ciphers to appear * [PM-11419] Adding an abort event from the active request manager * [PM-11419] Adding an abort event from the active request manager * [PM-11419] Working through jest tests within implementation * [PM-11419] Fixing jest tests within Fido2ClientService and Fido2AuthenticatorService * [PM-11419] Adding jest tests for added logic within OverlayBackground * [PM-11419] Adding jest tests for added logic within OverlayBackground * [PM-11419] Reworking how we handle assuming user presence when master password reprompt is required * [PM-11419] Reworking how we handle assuming user presence when master password reprompt is required * [PM-11419] Reworking how we handle assuming user presence when master password reprompt is required * [PM-11419] Refactoring implementation * [PM-11419] Incorporating suggestion for reporting failed passkey authentication from the inline menu * [PM-11419] Reworking positioning of the abort controller that informs the background script of an error * [PM-11419] Scoping down the behavior surrounding master password reprompt a bit more tightly * [PM-11419] Reworking how we handle reacting to active fido2 requests to avoid ambiguity * [PM-11419] Reworking how we handle reacting to active fido2 requests to avoid ambiguity * [PM-11419] Adjusting implementation to ensure we clear any active requests when the passkeys setting is modified
123 lines
3.8 KiB
TypeScript
123 lines
3.8 KiB
TypeScript
/**
|
|
* Parameters used to ask the user to confirm the creation of a new credential.
|
|
*/
|
|
export interface NewCredentialParams {
|
|
/**
|
|
* The name of the credential.
|
|
*/
|
|
credentialName: string;
|
|
|
|
/**
|
|
* The name of the user.
|
|
*/
|
|
userName: string;
|
|
|
|
/**
|
|
* The userhandle (userid) of the user.
|
|
*/
|
|
userHandle: string;
|
|
|
|
/**
|
|
* Whether or not the user must be verified before completing the operation.
|
|
*/
|
|
userVerification: boolean;
|
|
/**
|
|
* The relying party ID is usually the URL
|
|
*/
|
|
rpId: string;
|
|
}
|
|
|
|
/**
|
|
* Parameters used to ask the user to pick a credential from a list of existing credentials.
|
|
*/
|
|
export interface PickCredentialParams {
|
|
/**
|
|
* The IDs of the credentials that the user can pick from.
|
|
*/
|
|
cipherIds: string[];
|
|
|
|
/**
|
|
* Whether or not the user must be verified before completing the operation.
|
|
*/
|
|
userVerification: boolean;
|
|
|
|
/**
|
|
* Bypass the UI and assume that the user has already interacted with the authenticator.
|
|
*/
|
|
assumeUserPresence?: boolean;
|
|
|
|
/**
|
|
* Identifies whether a cipher requires a master password reprompt when getting a credential.
|
|
*/
|
|
masterPasswordRepromptRequired?: boolean;
|
|
}
|
|
|
|
/**
|
|
* This service is used to provide a user interface with which the user can control FIDO2 operations.
|
|
* It acts as a way to remote control the user interface from the background script.
|
|
*
|
|
* The service is session based and is intended to be used by the FIDO2 authenticator to open a window,
|
|
* and then use this window to ask the user for input and/or display messages to the user.
|
|
*/
|
|
export abstract class Fido2UserInterfaceService {
|
|
/**
|
|
* Creates a new session.
|
|
* Note: This will not necessarily open a window until it is needed to request something from the user.
|
|
*
|
|
* @param fallbackSupported Whether or not the browser natively supports WebAuthn.
|
|
* @param abortController An abort controller that can be used to cancel/close the session.
|
|
*/
|
|
newSession: (
|
|
fallbackSupported: boolean,
|
|
tab: chrome.tabs.Tab,
|
|
abortController?: AbortController,
|
|
) => Promise<Fido2UserInterfaceSession>;
|
|
}
|
|
|
|
export abstract class Fido2UserInterfaceSession {
|
|
/**
|
|
* Ask the user to pick a credential from a list of existing credentials.
|
|
*
|
|
* @param params The parameters to use when asking the user to pick a credential.
|
|
* @param abortController An abort controller that can be used to cancel/close the session.
|
|
* @returns The ID of the cipher that contains the credentials the user picked.
|
|
*/
|
|
pickCredential: (
|
|
params: PickCredentialParams,
|
|
) => Promise<{ cipherId: string; userVerified: boolean }>;
|
|
|
|
/**
|
|
* Ask the user to confirm the creation of a new credential.
|
|
*
|
|
* @param params The parameters to use when asking the user to confirm the creation of a new credential.
|
|
* @param abortController An abort controller that can be used to cancel/close the session.
|
|
* @returns The ID of the cipher where the new credential should be saved.
|
|
*/
|
|
confirmNewCredential: (
|
|
params: NewCredentialParams,
|
|
) => Promise<{ cipherId: string; userVerified: boolean }>;
|
|
|
|
/**
|
|
* Make sure that the vault is unlocked.
|
|
* This will open a window and ask the user to login or unlock the vault if necessary.
|
|
*/
|
|
ensureUnlockedVault: () => Promise<void>;
|
|
|
|
/**
|
|
* Inform the user that the operation was cancelled because their vault contains excluded credentials.
|
|
*
|
|
* @param existingCipherIds The IDs of the excluded credentials.
|
|
*/
|
|
informExcludedCredential: (existingCipherIds: string[]) => Promise<void>;
|
|
|
|
/**
|
|
* Inform the user that the operation was cancelled because their vault does not contain any useable credentials.
|
|
*/
|
|
informCredentialNotFound: (abortController?: AbortController) => Promise<void>;
|
|
|
|
/**
|
|
* Close the session, including any windows that may be open.
|
|
*/
|
|
close: () => void;
|
|
}
|