Descrizione
Usa l'API chrome.enterprise.platformKeys
per generare chiavi e installare certificati per queste chiavi. I certificati verranno gestiti dalla piattaforma e potranno essere utilizzati per l'autenticazione TLS, l'accesso alla rete o altre estensioni tramite chrome.platformKeys.
Autorizzazioni
enterprise.platformKeys
Disponibilità
Concetti e utilizzo
L'utilizzo tipico di questa API per registrare un certificato client segue questi passaggi:
Ottieni tutti i token disponibili utilizzando
enterprise.platformKeys.getTokens()
.Trova il token con
id
uguale a"user"
. Utilizza questo token in un secondo momento.Genera una coppia di chiavi utilizzando il metodo Token
generateKey()
(definito in SubtleCrypto). L'handle restituirà l'handle alla chiave.Esporta la chiave pubblica utilizzando il metodo Token
exportKey()
(definito in SubtleCrypto).Crea la firma dei dati della richiesta di certificazione utilizzando il metodo Token
sign()
(definito in SubtleCrypto).Compila la richiesta di certificazione e inviala all'autorità di certificazione.
Se viene ricevuto un certificato, importalo utilizzando [
enterprise.platformKeys.importCertificate()
"[3]
Ecco un esempio che mostra la principale interazione dell'API, tranne la creazione e l'invio della richiesta di certificazione:
function getUserToken(callback) {
chrome.enterprise.platformKeys.getTokens(function(tokens) {
for (var i = 0; i < tokens.length; i++) {
if (tokens[i].id == "user") {
callback(tokens[i]);
return;
}
}
callback(undefined);
});
}
function generateAndSign(userToken) {
var data = new Uint8Array([0, 5, 1, 2, 3, 4, 5, 6]);
var algorithm = {
name: "RSASSA-PKCS1-v1_5",
// RsaHashedKeyGenParams
modulusLength: 2048,
publicExponent:
new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537
hash: {
name: "SHA-256",
}
};
var cachedKeyPair;
userToken.subtleCrypto.generateKey(algorithm, false, ["sign"])
.then(function(keyPair) {
cachedKeyPair = keyPair;
return userToken.subtleCrypto.exportKey("spki", keyPair.publicKey);
},
console.log.bind(console))
.then(function(publicKeySpki) {
// Build the Certification Request using the public key.
return userToken.subtleCrypto.sign(
{name : "RSASSA-PKCS1-v1_5"}, cachedKeyPair.privateKey, data);
},
console.log.bind(console))
.then(function(signature) {
// Complete the Certification Request with |signature|.
// Send out the request to the CA, calling back
// onClientCertificateReceived.
},
console.log.bind(console));
}
function onClientCertificateReceived(userToken, certificate) {
chrome.enterprise.platformKeys.importCertificate(userToken.id, certificate);
}
getUserToken(generateAndSign);
Tipi
Algorithm
Tipo di chiave da generare.
Enum
"RSA"
"ECDSA"
ChallengeKeyOptions
Proprietà
-
challenge
ArrayBuffer
Una richiesta di verifica emessa dall'API Verified Access Web.
-
registerKey
RegisterKeyOptions facoltativo
Se presente, registra la chiave richiesta con il token di
scope
specificato. La chiave può quindi essere associata a un certificato e utilizzata come qualsiasi altra chiave di firma. Le chiamate successive a questa funzione genereranno una nuova chiave aziendale nel camposcope
specificato. -
ambito
Qual è la chiave aziendale da mettere in discussione.
RegisterKeyOptions
Proprietà
-
algoritmo
L'algoritmo che deve utilizzare la chiave registrata.
Scope
Indica se utilizzare la chiave utente aziendale o la chiave macchina aziendale.
Enum
Token
Proprietà
-
id
stringa
Identifica in modo univoco questo
Token
.Gli ID statici sono
"user"
e"system"
e fanno riferimento, rispettivamente, al token hardware specifico della piattaforma e al token hardware a livello di sistema. Qualsiasi altro token (con altri identificatori) potrebbe essere restituito daenterprise.platformKeys.getTokens
. -
softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97 e versioni successiveImplementa l'interfaccia SubtleCrypto di WebCrypto. Le operazioni crittografiche, inclusa la generazione delle chiavi, sono supportate da software. La protezione delle chiavi, e quindi l'implementazione della proprietà non estraibile, avviene nel software, quindi le chiavi sono meno protette delle chiavi supportate dall'hardware.
È possibile generare solo chiavi RSASSA-PKCS1-V1_5 non estraibili con
modulusLength
fino a 2048. Ogni chiave può essere utilizzata al massimo per la firma dei dati.Le chiavi generate su un
Token
specifico non possono essere utilizzate con altri token, né conwindow.crypto.subtle
. Analogamente, gli oggettiKey
creati conwindow.crypto.subtle
non possono essere utilizzati con questa interfaccia. -
subtleCrypto
SubtleCrypto
Implementa l'interfaccia SubtleCrypto di WebCrypto. Le operazioni crittografiche, inclusa la generazione delle chiavi, sono supportate dall'hardware.
È possibile generare solo chiavi RSASSA-PKCS1-V1_5 non estraibili con
modulusLength
fino a 2048 ed ECDSA connamedCurve
P-256. Ogni chiave può essere utilizzata al massimo per la firma dei dati.Le chiavi generate su un
Token
specifico non possono essere utilizzate con altri token, né conwindow.crypto.subtle
. Analogamente, gli oggettiKey
creati conwindow.crypto.subtle
non possono essere utilizzati con questa interfaccia.
Metodi
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
callback: function,
)
Simile a challengeMachineKey
e challengeUserKey
, ma consente di specificare l'algoritmo di una chiave registrata. Verifica una chiave macchina aziendale supportata da hardware ed emette la risposta come parte di un protocollo di attestazione remota. Utile solo su ChromeOS e in combinazione con l'API Verified Access Web, che effettua verifiche e verifica le risposte.
Una verifica riuscita da parte dell'API Verified Access Web è un segnale chiaro che il dispositivo corrente è un dispositivo ChromeOS legittimo, che il dispositivo corrente è gestito dal dominio specificato durante la verifica, che l'utente che ha eseguito l'accesso è gestito dal dominio specificato durante la verifica e che lo stato attuale del dispositivo è conforme ai criteri dei dispositivi aziendali. Ad esempio, un criterio potrebbe specificare che il dispositivo non deve essere in modalità sviluppatore. L'identità del dispositivo emessa dalla verifica è strettamente legata all'hardware del dispositivo corrente. Se l'ambito "user"
viene specificato, l'identità è anche strettamente associata all'utente che ha eseguito l'accesso.
Questa funzione è altamente limitata e avrà esito negativo se il dispositivo attuale non è gestito, l'utente corrente non è gestito o se questa operazione non è stata esplicitamente abilitata per il chiamante in base ai criteri relativi ai dispositivi aziendali. La chiave richiesta non risiede nel token "system"
o "user"
e non è accessibile a nessun'altra API.
Parametri
-
opzioni del modello.
Oggetto contenente i campi definiti in
ChallengeKeyOptions
. -
callback
funzione
Il parametro
callback
ha il seguente aspetto:(response: ArrayBuffer) => void
-
risposta
ArrayBuffer
La risposta alla challenge.
-
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
callback: function,
)
Usa invece challengeKey
.
Verifica una chiave macchina aziendale supportata da hardware ed emette la risposta come parte di un protocollo di attestazione remota. Utile solo su ChromeOS e in combinazione con l'API Verified Access Web, che effettua verifiche e verifica le risposte. Una verifica riuscita da parte dell'API Verified Access Web è un indicatore chiaro di quanto segue: * Il dispositivo attuale è un dispositivo ChromeOS legittimo. * Il dispositivo attuale è gestito dal dominio specificato durante la verifica. * L'utente che attualmente ha eseguito l'accesso è gestito dal dominio specificato durante la verifica. * Lo stato attuale del dispositivo è conforme ai criteri relativi ai dispositivi aziendali. Ad esempio, un criterio potrebbe specificare che il dispositivo non deve essere in modalità sviluppatore. * Qualsiasi identità del dispositivo emessa dalla verifica è strettamente legata all'hardware del dispositivo corrente. Questa funzione è altamente limitata e avrà esito negativo se il dispositivo attuale non è gestito, l'utente corrente non è gestito o se questa operazione non è stata esplicitamente abilitata per il chiamante in base ai criteri relativi ai dispositivi aziendali. La chiave della macchina aziendale non risiede nel token "system"
e non è accessibile a nessun'altra API.
Parametri
-
challenge
ArrayBuffer
Una richiesta di verifica emessa dall'API Verified Access Web.
-
registerKey
booleano facoltativo
Chrome 59 e versioni successiveSe impostata, la chiave della macchina aziendale attuale viene registrata con il token
"system"
e rinuncia al ruolo Chiave macchina aziendale. La chiave può quindi essere associata a un certificato e utilizzata come qualsiasi altra chiave di firma. Questa chiave è RSA a 2048 bit. Le chiamate successive a questa funzione genereranno una nuova chiave della macchina aziendale. -
callback
funzione
Il parametro
callback
ha il seguente aspetto:(response: ArrayBuffer) => void
-
risposta
ArrayBuffer
La risposta alla challenge.
-
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
callback: function,
)
Usa invece challengeKey
.
Richiede una chiave utente aziendale supportata da hardware ed emette la risposta come parte di un protocollo di attestazione remota. Utile solo su ChromeOS e in combinazione con l'API Verified Access Web, che effettua verifiche e verifica le risposte. Una verifica riuscita da parte dell'API Verified Access Web è un indicatore chiaro di quanto segue: * Il dispositivo attuale è un dispositivo ChromeOS legittimo. * Il dispositivo attuale è gestito dal dominio specificato durante la verifica. * L'utente che attualmente ha eseguito l'accesso è gestito dal dominio specificato durante la verifica. * Lo stato attuale del dispositivo è conforme ai criteri relativi agli utenti aziendali. Ad esempio, un criterio potrebbe specificare che il dispositivo non deve essere in modalità sviluppatore. * La chiave pubblica emessa dalla verifica è strettamente legata all'hardware del dispositivo corrente e all'utente che ha eseguito l'accesso. Questa funzione è altamente limitata e avrà esito negativo se il dispositivo attuale non è gestito, l'utente corrente non è gestito o se questa operazione non è stata esplicitamente abilitata per il chiamante in base ai criteri relativi agli utenti aziendali. La chiave utente aziendale non risiede nel token "user"
e non è accessibile a nessun'altra API.
Parametri
-
challenge
ArrayBuffer
Una richiesta di verifica emessa dall'API Verified Access Web.
-
registerKey
boolean
Se viene configurato, la chiave utente aziendale corrente viene registrata con il token
"user"
e rinuncia al ruolo Chiave utente aziendale. La chiave può quindi essere associata a un certificato e utilizzata come qualsiasi altra chiave di firma. Questa chiave è RSA a 2048 bit. Le chiamate successive a questa funzione genereranno una nuova chiave utente aziendale. -
callback
funzione
Il parametro
callback
ha il seguente aspetto:(response: ArrayBuffer) => void
-
risposta
ArrayBuffer
La risposta alla challenge.
-
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
callback: function,
)
Restituisce l'elenco di tutti i certificati client disponibili per il token specificato. Può essere utilizzato per verificare l'esistenza e la scadenza di certificati client utilizzabili per una determinata autenticazione.
Parametri
-
tokenId
stringa
L'ID di un token restituito da
getTokens
. -
callback
funzione
Il parametro
callback
ha il seguente aspetto:(certificates: ArrayBuffer[]) => void
-
certificates
ArrayBuffer[]
L'elenco di certificati, ciascuno con codifica DER di un certificato X.509.
-
getTokens()
chrome.enterprise.platformKeys.getTokens(
callback: function,
)
Restituisce i token disponibili. In una normale sessione utente, l'elenco conterrà sempre il token dell'utente con id
"user"
. Se è disponibile un token TPM a livello di sistema, l'elenco restituito conterrà anche il token a livello di sistema con id
"system"
. Il token a livello di sistema sarà lo stesso per tutte le sessioni su questo dispositivo (dispositivo, ad esempio un Chromebook).
Parametri
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
Importa certificate
nel token specificato, se la chiave certificata è già archiviata in questo token. Se la richiesta di certificazione viene approvata, questa funzione deve essere utilizzata per archiviare il certificato ottenuto e renderlo disponibile al sistema operativo e al browser per l'autenticazione.
Parametri
-
tokenId
stringa
L'ID di un token restituito da
getTokens
. -
certificato
ArrayBuffer
La codifica DER di un certificato X.509.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
Rimuove certificate
dal token specificato, se presente. Deve essere utilizzato per rimuovere certificati obsoleti in modo che non vengano presi in considerazione durante l'autenticazione e non influiscano sulla scelta dei certificati. Deve essere utilizzato per liberare spazio di archiviazione nell'archivio certificati.
Parametri
-
tokenId
stringa
L'ID di un token restituito da
getTokens
. -
certificato
ArrayBuffer
La codifica DER di un certificato X.509.
-
callback
funzione facoltativa
Il parametro
callback
ha il seguente aspetto:() => void