Я использую библиотеку Microsoft.Azure.Services.AppAuthentication (v1.0.3) для .NET для подключения из приложения-функции Azure к хранилищу больших двоичных объектов с использованием идентификатора управляемой службы.Код авторизации:
var tokenProvider = new AzureServiceTokenProvider();
string accessToken = await tokenProvider.GetAccessTokenAsync("https://storage.azure.com/");
var tokenCredential = new TokenCredential(accessToken);
var credentials = new StorageCredentials(tokenCredential);
var storageUri = new Uri($"https://{accountName}.blob.core.windows.net");
var client = new CloudBlobClient(storageUri, credentials);
Одна существующая учетная запись хранения отказывается принимать MSI независимо от заданных ролей RBAC:
Microsoft.WindowsAzure.Storage.StorageException: Server failed to authenticate the request.
Make sure the value of Authorization header is formed correctly including the signature.
at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteAsyncInternal[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext, CancellationToken token)
at Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer.CreateIfNotExistsAsync(BlobContainerPublicAccessType accessType, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken)
Дополнительные сведения об исключении storageException.RequestInformation.ExtendedErrorInformation.AdditionalDetails
жалуются, что AuthenticationErrorDetail: Issuer validation failed. Issuer did not match.
При декодировании сбойного токена jwt издатель выглядит нормально:
{
"aud": "https://storage.azure.com/",
"iss": "https://sts.windows.net/<my directory guid>/",
...
}
Когда я создавал новые идентично настроенные учетные записи хранения, работал тот же MSI приложения и код аутентификации приложения, и даже издатель в токенебыли точно такими же.Таким образом, приложение клиентской функции и его идентификатор MSI здесь не являются виновником.
Почему эта одна учетная запись хранения не может авторизоваться и как заставить ее принять MSI?
ОБНОВЛЕНИЕ: Крест отправил на форум MS , чтобы привлечь внимание MS при проверке, является ли это лазурной ошибкой.