Ошибка авторизации Hazure Blob Blob -BlobC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка авторизации Hazure Blob Blob -Blob

Сообщение Anonymous »

Вот подробный и хорошо структурированный пост стека Неудача-Пробое управляемая идентичность и токен SAS без успеха
Мы работаем над веб-приложением на основе azure и встречаемся Постоянные Проблемы авторизации при попытке загрузить файлы в azure Blob Blob Storage . Несмотря на попытки нескольких методов аутентификации (управляемая идентификация и токены SAS) , мы продолжаем получать авторизацию failure ошибки.
🛠 Наша архитектура
  • frontend: React (размещенные на статических веб -приложениях Azure)
  • Backend: .NET CORE API (размещен в службе Azure App)
    хранилище: < /strong> azure Blob Blob Storage < /li>
    Попытка аутентификации: < /strong>

    Аутентификация управляемой идентификации (предпочтительнее)
  • Аутентификация токена SAS (Sharkback)
    < /ul>
    < /li>
    < /ul>

    🎯 Наша цель < /strong> < /h2> < бренд /> Нам нужно разрешить Frontend (React App) для загрузки файлов в azure Blob Storage , через наш бэкэнд API надежно.
  • React Frontend вызывает наш .NET Core API , что отвечает за обработку файл загружает .
  • Backend с файлами Hazure Blob и загрузкой от имени фронта.
    Мы должны избегать использования личных учетных данных или строк в твердо кодировании. Аутентификация идентификации < /strong>, но также и попытка sas tokens < /strong> из -за постоянных сбоев. < /Li>
    < /ul>

    🔗 То, что мы попробовали

    1⃣ с использованием управляемой аутентификации идентификации
    Мы включили Системную управляемую идентичность для нашего Backendapi (Azure App Service) и назначил ему следующие роли IAM : < /p>

    📌 IAM. class = "s-table">


    role < /th>
    scope < /th>
    < /tr>
    < /thead>


    Вклад данных по борьбе с данными хранилища < /td>

    [code]/subscriptions/{subscriptionId}/resourceGroups/OmegaWrap< /code> < /td>
    < /tr>

    Владелец данных Blob Blob < /td>
    /subscriptions/{subscriptionId}/resourceGroups/OmegaWrap/providers/Microsoft.Storage/storageAccounts/omegawrapstorage[/code]



    Вот Раздел кода бэкэнд [/b], включая реализацию ManagedIdentityCredential , а также ссылку на источник документации Microsoft . /> 📌 Backend Code (с использованием управляемой идентификации)

    Мы изначально следили за официальной документацией Microsoft (ссылка) и попытки < Strong> Два разных подхода к учетным данным :
    1⃣ defaurecredential (многопользовательский Подход)
    Первый подход использует DefaultaUrecredential , который автоматически выбирает наилучший доступный метод аутентификации на основе среды.

    Код: Выделить всё

    static async Task GetBlobContainerClientAsync(string storageAccount, string containerName)
    {
    var credential = new DefaultAzureCredential();
    var blobServiceClient = new BlobServiceClient(new Uri($"https://{storageAccount}.blob.core.windows.net"), credential);
    var blobContainerClient = blobServiceClient.GetBlobContainerClient(containerName);
    
    if (!await blobContainerClient.ExistsAsync())
    {
    await blobContainerClient.CreateIfNotExistsAsync(PublicAccessType.None);
    }
    
    return blobContainerClient;
    }
    
    2⃣ ManagedIdentityCredential (явно нацеленная на управляемая идентичность)
    Поскольку DefaulataRecredential попытки Несколько методов < /strong> (например, переменные среды, логин CLI, управляемая идентичность и т. Д.), Мы также попробовали напрямую, используя ManagedIdentityCredential , который явно Цели управляла аутентификацией идентификации .

    Код: Выделить всё

    static async Task GetBlobContainerClientAsync(string storageAccount, string containerName)
    {
    var credential = new ManagedIdentityCredential(); // Explicitly using Managed Identity
    var blobServiceClient = new BlobServiceClient(new Uri($"https://{storageAccount}.blob.core.windows.net"), credential);
    var blobContainerClient = blobServiceClient.GetBlobContainerClient(containerName);
    
    if (!await blobContainerClient.ExistsAsync())
    {
    await blobContainerClient.CreateIfNotExistsAsync(PublicAccessType.None);
    }
    
    return blobContainerClient;
    }
    < /code>
    
    [h4] [b] 📌 Source < /strong> < /h4>
    Мы следили за документацией Microsoft < /strong> На аутентификации с помощью  системы управляемой идентификации  < /strong>:
    
    🔗 Microsoft Docs-Управляемая идентификация, назначенная системой в .net < /p>
    Несмотря на реализацию  оба подхода [/b], [b] мы продолжаем получать одинаковую авторизацию failure (403) 
    ошибка [/b], когда наш бэкэнд пытается аутентифицировать и загружать файлы в Hazure Blob Storage .
    📌 Результат [/h4]
    ❌ Сообщение об ошибке (403 - AuthorizationFailure)

    Код: Выделить всё

    AuthorizationFailure
    This request is not authorized to perform this operation.


    Даже после часов ожидания для распространения ролей ошибка упорно .

    проверенный идентификатор объекта управляемого идентификации и подтвердил его роль Назначения.
  • подтвердил эмиссию токена с помощью curl :

Код: Выделить всё

curl -H "Metadata: true" "http://169.254.169.254/metadata/identity/oauth2/token?resource=https://storage.azure.com&api-version=2019-08-01"
[*] Токен выпускается , но запросы Blob Herese не удастся с авторизацией failure .
< /ul>

2⃣ переключение на аутентификацию Token SAS < /strong> < /h3>
После Борьба с управляемой идентичностью
, мы сгенерировали токен SAS и попытались подтвердить подлинность бэкэнд таким образом. Поколение

Код: Выделить всё

az storage container generate-sas \
--account-name omegawrapstorage \
--name uploads \
--permissions acdlrw \
--expiry 2025-03-01T00:00:00Z \
--output tsv
сгенерированный токен SAS был тогда использовался в бэкэнд :

Код: Выделить всё

var sasUri = $"https://{storageAccount}.blob.core.windows.net/{containerName}?{sasToken}";
var blobServiceClient = new BlobServiceClient(new Uri(sasUri));
var blobContainerClient = blobServiceClient.GetBlobContainerClient(containerName);

📌 Результат

❌ Тот же авторизация failure (403). > < /p>

🚨 Ошибки, которые мы видим < /strong> < /h2>
Мы продолжаем получать следующий Ошибки
независимо от метода аутентификации:
1⃣ Управляемая идентичность:

Код: Выделить всё

AuthorizationFailure
This request is not authorized to perform this operation.


2⃣ Аутентификация токена SAS:

Код: Выделить всё

AuthorizationFailure
This request is not authorized to perform this operation.

< /code>

💡 Вопросы < /strong> < /h2>

[*] Почему Управляемая аутентификация идентификации не выполняется, даже если назначены правильные роли IAM? Хранилище? li> Какие еще варианты существуют для надежного разрешения нашего бэкэнд API загружать файлы в хранилище Blob -Blob? На уровне счета хранения (например, брандмауэр, частные конечные точки)? < /strong> < /li>
< /ol>

🛠 Дополнительный Отладка выполнена [/b]

проверено IAM разрешения как для управляемой личности, так и для SAS Аутентификация.
[*] сгенерировал токены и проверила их претензии с использованием jwt.ms .
[*] подтверждено Политики доступа к учетной записи хранилища , которые в настоящее время допускают доступ общедоступной сети. Изменение).
[*] Пробое явное defaultaUrecredential конфигурации , гарантируя, что он использует Managed Identity .
< /ul>

❗ Запрос на помощь < /strong> < /h2>
На данный момент мы исчерпали Все известные подходы для правильной аутентификации с помощью хранилища Blob Blob
. Если кто -то успешно внедрил защищенную аутентификацию бэкэнд для хранения Blob в среде обслуживания приложений Azure , мы действительно будем оценить ваше и рекомендации .
Любая помощь очень ценится! 🚀

Подробнее здесь: https://stackoverflow.com/questions/794 ... s-token-wi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка авторизации Hazure Blob Blob -Blob
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Ошибка авторизации Hazure Blob Blob -Blob
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Hazure Blob Blob Storage не загружается в приложении Maui (отладка на Windows Machine)
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Статическое веб -сайт Hazure Blob State Spa не удастся после изменений сжатия WebPack
    Anonymous » » в форуме Javascript
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Hazure Blob Herese Получите несколько свойств от нескольких каплей по одному вызову
    Anonymous » » в форуме C#
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»