Keyvault Authentication using username and password
The customer has created a key vault and store the credentials . To authenticate key vault , I have created the application in the node and using client id and client secret , I am able to read the secrets. But now the customer wants not to use the client id and client secret , instead use the username and password of the AZURE to access the keyvault in the program. Its one dedicated user for the keyvault access with no MFA.
I am not sure if we can access the keyvault with username and password from the node js. Kindly suggest.
Thanks
Réponses
Pour cette exigence, je pense également que l'utilisation du flux nom d'utilisateur-mot de passe n'est pas nécessaire et que le flux d'informations d'identification du client devrait être meilleur (comme juunas l'a mentionné dans les commentaires). Mais si le client souhaite toujours utiliser le flux nom d'utilisateur-mot de passe à mettre en œuvre, je peux fournir un exemple comme ci-dessous pour votre référence :
1. Vous devez enregistrer une application dans AD avec une plate-forme native mais pas avec une plate-forme Web.
Et veuillez vérifier si " Traiter l'application comme un client public " est activé.
Si votre application est une plate-forme Web, lorsque vous exécutez le code node js, un message d'erreur s'affiche pour vous demander de fournir un "secret client" même si vous utilisez le flux nom d'utilisateur-mot de passe.
2. Vous devez ajouter l'autorisation Azure Key Vault à votre application.
3. Ensuite, vous pouvez vous référer au code ci-dessous pour obtenir la valeur secrète.
const KeyVault = require('azure-keyvault');
const { AuthenticationContext } = require('adal-node');
const clientId = '<clientId>';
const username = '<username>';
const password = '<password>';
var secretAuthenticator = function (challenge, callback) {
var context = new AuthenticationContext(challenge.authorization);
return context.acquireTokenWithUsernamePassword(challenge.resource, username, password, clientId, function(
err,
tokenResponse,
) {
if (err) throw err;
var authorizationValue = tokenResponse.tokenType + ' ' + tokenResponse.accessToken;
return callback(null, authorizationValue);
});
};
var credentials = new KeyVault.KeyVaultCredentials(secretAuthenticator);
var client = new KeyVault.KeyVaultClient(credentials);
client.getSecret("https://<keyvaultname>.vault.azure.net/", "<secret name>", "<secret version>", function (err, result) {
if (err) throw err;
console.log("secret value is: " + result.value);
});