36 lines
1.2 KiB
PowerShell
36 lines
1.2 KiB
PowerShell
function Resolve-ConfigurationDataSecretReference {
|
|
[CmdletBinding()]
|
|
Param(
|
|
[Parameter(Mandatory=$true)]
|
|
[System.Collections.IDictionary]
|
|
$Reference,
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
[ValidateSet("credential", "securestring", "string")]
|
|
[string]
|
|
$ExpectedType,
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[hashtable]
|
|
$ProviderSettings = @{}
|
|
)
|
|
|
|
$Provider = [string](Get-ConfigurationDataMapValue -Map $Reference -Key "Provider")
|
|
$ProviderDefinition = Get-ConfigurationDataSecretProvider -Name $Provider
|
|
|
|
if($null -eq $ProviderDefinition){
|
|
throw "Unsupported secret provider [$Provider]."
|
|
}
|
|
|
|
if($ProviderDefinition.SupportedTypes -notcontains $ExpectedType.ToLowerInvariant()){
|
|
throw "Secret provider [$($ProviderDefinition.Name)] does not support type [$ExpectedType]."
|
|
}
|
|
|
|
$CurrentProviderSettings = @{}
|
|
if($ProviderSettings.ContainsKey($ProviderDefinition.Name)){
|
|
$CurrentProviderSettings = $ProviderSettings[$ProviderDefinition.Name]
|
|
}
|
|
|
|
return & $ProviderDefinition.Resolver -Reference $Reference -ExpectedType $ExpectedType -ProviderSettings $CurrentProviderSettings
|
|
}
|