in src/Microsoft.Azure.Relay/RelayConnectionStringBuilder.cs [209:264]
internal void Validate()
{
if (this.Endpoint == null)
{
throw RelayEventSource.Log.ArgumentNull(nameof(Endpoint), TraceSource);
}
// if one supplied SharedAccessKeyName, they need to supply SharedAccessKey, and vise versa
// if SharedAccessSignature is specified, Neither SasKey nor SasKeyName should not be specified
var hasSharedAccessKeyName = !string.IsNullOrWhiteSpace(this.SharedAccessKeyName);
var hasSharedAccessKey = !string.IsNullOrWhiteSpace(this.SharedAccessKey);
var hasSharedAccessSignature = !string.IsNullOrWhiteSpace(this.SharedAccessSignature);
if (hasSharedAccessSignature)
{
if (hasSharedAccessKeyName)
{
throw RelayEventSource.Log.Argument(
SharedAccessSignatureConfigName + "," + SharedAccessKeyNameConfigName,
SR.GetString(SR.SasTokenShouldBeAlone, SharedAccessSignatureConfigName, SharedAccessKeyNameConfigName),
TraceSource);
}
if (hasSharedAccessKey)
{
throw RelayEventSource.Log.Argument(
SharedAccessSignatureConfigName + "," + SharedAccessKeyConfigName,
SR.GetString(SR.SasTokenShouldBeAlone, SharedAccessSignatureConfigName, SharedAccessKeyConfigName),
TraceSource);
}
}
else if ((hasSharedAccessKeyName && !hasSharedAccessKey) || (!hasSharedAccessKeyName && hasSharedAccessKey))
{
// SharedAccessKeyName + SharedAccessKey go together, cannot specify one without the other.
throw RelayEventSource.Log.Argument(SharedAccessKeyNameConfigName + "," + SharedAccessKeyConfigName,
SR.GetString(SR.ArgumentInvalidCombination, SharedAccessKeyNameConfigName + "," + SharedAccessKeyConfigName),
TraceSource);
}
// Validate that the user has not specified the authentication type to be ManagedIdentity and also providing SAS values.
if (this.Authentication == AuthenticationType.ManagedIdentity)
{
if (!string.IsNullOrWhiteSpace(this.SharedAccessKey))
{
throw new ArgumentException(string.Format(SR.ArgumentInvalidCombination, $"{AuthenticationConfigName}, {nameof(SharedAccessKey)}"));
}
else if (!string.IsNullOrWhiteSpace(this.SharedAccessKeyName))
{
throw new ArgumentException(string.Format(SR.ArgumentInvalidCombination, $"{AuthenticationConfigName}, {nameof(SharedAccessKeyName)}"));
}
else if (!string.IsNullOrWhiteSpace(this.SharedAccessSignature))
{
throw new ArgumentException(string.Format(SR.ArgumentInvalidCombination, $"{AuthenticationConfigName}, {nameof(SharedAccessSignature)}"));
}
}
}