Sample code for 30+ languages & platforms
DataFlex

Azure Key Vault - Setup Bootstrap Secret in Local Manager

See more Secrets Examples

Accessing a cloud-based secrets manager requires authentication credentials, which cannot be stored in the manager itself. Instead, they must be securely stored locally.

One solution is to store the authentication credentials as a secret in the Windows Credentials Manager or Apple Keychain. These credentials serve as the "bootstrap secret" for authenticating with the cloud-based secrets manager.

This example demonstrates how to setup a bootstrap secret for the Azure Key Vault.

Note: This example requires Chilkat v10.1.0 or later.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoBootstrap
    Variant vJson
    Handle hoJson
    Variant vJsonSecret
    Handle hoJsonSecret
    String sTemp1

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatSecrets)) To hoBootstrap
    If (Not(IsComObjectCreated(hoBootstrap))) Begin
        Send CreateComObject of hoBootstrap
    End

    // We're going to store the bootstrap secret in the local manager.
    // On Windows, this is the Windows Credentials Manager
    // On MacOS/iOS, it is the Apple Keychain
    Set ComLocation Of hoBootstrap To "local_manager"

    // Specify the name of the bootstrap secret.
    // service and username are required.
    // appName and domain are optional.
    // Note: The values are arbitrary and can be anything you want.
    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Get ComUpdateString Of hoJson "appName" "azure_bs" To iSuccess
    Get ComUpdateString Of hoJson "service" "Example" To iSuccess
    Get ComUpdateString Of hoJson "username" "Joe" To iSuccess

    // The bootstrap secret for the Azure Key Vault will contain
    // the tenant_id, client_id, and client_secret, like this:
    Get Create (RefClass(cComChilkatJsonObject)) To hoJsonSecret
    If (Not(IsComObjectCreated(hoJsonSecret))) Begin
        Send CreateComObject of hoJsonSecret
    End
    // Modify to your values.
    Get ComUpdateString Of hoJsonSecret "tenant_id" "YOUR_TENANT_ID" To iSuccess
    Get ComUpdateString Of hoJsonSecret "client_id" "YOUR_CLIENT_ID" To iSuccess
    Get ComUpdateString Of hoJsonSecret "client_secret" "YOUR_CLIENT_SECRET" To iSuccess

    // Create or update the bootstrap secret.
    Get pvComObject of hoJson to vJson
    Get pvComObject of hoJsonSecret to vJsonSecret
    Get ComUpdateSecretJson Of hoBootstrap vJson vJsonSecret To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoBootstrap To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "The Azure bootstrap secret has been stored."


End_Procedure