Lua Requires Chilkat v9.5.0.96+
Lua
Azure Key Vault Get Certificates
See more Azure Key Vault Examples
Demonstrates how to list the certificates in an Azure Key Vault.Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
-- We demonstrated how to get an access token for your Azure Key Vault
-- in this example: Azure Key Vault Get OAuth2 Access Token using Client Credentials
-- However.. instead of directly providing Chilkat with the OAuth2 access token,
-- you can instead provide the means for Chilkat to automatically get the OAuth2 access token,
-- and in addition, Chilkat will automatically re-fetch a new OAuth2 access token as needed, such as shortly
-- prior to or after expiration.
-- You do this by setting the AuthToken property to a JSON string that contains the required information.
local json = chilkat.JsonObject.new()
json:update_string("client_id", "APP_ID")
-- The APP_PASSWORD is the "password" returned by the Azure CLI command: az ad sp create-for-rbac --name http://example.com --role Contributor
-- See Azure Key Vault Get OAuth2 Access Token using Client Credentials
json:update_string("client_secret", "APP_PASSWORD")
-- The access token will be for Azure Key Vault operations.
json:update_string("resource", "https://vault.azure.net")
-- Specify the token endpoint which includes your tenant ID.
json:update_string("token_endpoint", "https://login.microsoftonline.com/TENANT_ID/oauth2/token")
local http = chilkat.Http.new()
-- Instead of providing an actual access token, we give Chilkat the information that allows it to
-- automatically fetch the access token using the OAuth2 client credentials flow.
http.auth_token = json:emit()
-- Replace key_vault_name with the name of your Azure Key Vault.
local sbResponse = chilkat.StringBuilder.new()
local success = http:quick_get_sb("https://key_vault_name.vault.azure.net/certificates?api-version=7.4", sbResponse)
if not success then
local statusCode = http.last_status
if statusCode == 0 then
-- We did not get a response from the server..
print(http.last_error_text)
else
-- We received a response, but it was an error.
print("Error response status code: " .. statusCode)
print("Error response:")
print(sbResponse:get_as_string())
end
return
end
local jsonResp = chilkat.JsonObject.new()
jsonResp:load_sb(sbResponse)
jsonResp.emit_compact = false
print(jsonResp:emit())
-- The output looks like this:
-- {
-- "value": [
-- {
-- "id": "https://kvchilkat.vault.azure.net/certificates/BadSSL",
-- "x5t": "U04xLnb8Ww7BKkW9dD7P1cCHNDY",
-- "attributes": {
-- "enabled": true,
-- "nbf": 1674409014,
-- "exp": 1737481014,
-- "created": 1697294224,
-- "updated": 1697294224
-- },
-- "subject": ""
-- },
-- {
-- "id": "https://kvchilkat.vault.azure.net/certificates/Brasil",
-- "x5t": "ayF5eBtlA35xPMivusE0wpmFjnA",
-- "attributes": {
-- "enabled": true,
-- "nbf": 1667830002,
-- "exp": 1699366002,
-- "created": 1697294090,
-- "updated": 1697294090
-- },
-- "subject": ""
-- }
-- ],
-- "nextLink": null
-- }
-- Use this online tool to generate parsing code from sample JSON:
-- Generate Parsing Code from JSON
local id = ""
local x5t = ""
local Enabled = false
local Nbf = 0
local Exp = 0
local Created = 0
local Updated = 0
local subject = ""
local i = 0
local count_i = jsonResp:size_of_array("value")
while i < count_i do
jsonResp.i = i
id = jsonResp:string_of("value[i].id")
x5t = jsonResp:string_of("value[i].x5t")
Enabled = jsonResp:bool_of("value[i].attributes.enabled")
Nbf = jsonResp:int_of("value[i].attributes.nbf")
Exp = jsonResp:int_of("value[i].attributes.exp")
Created = jsonResp:int_of("value[i].attributes.created")
Updated = jsonResp:int_of("value[i].attributes.updated")
subject = jsonResp:string_of("value[i].subject")
i = i + 1
end