Аутентификация в неправильном формате при настройке свойств службы BLOB-объектов Azure (REST API).


person kaques    schedule 25.02.2014    source источник


Ответы (3)


Запрос имеет неполный заголовок авторизации. Он должен содержать схему проверки подлинности, имя учетной записи хранения и подпись. Например;

Authorization: SharedKey myaccount:Z1lTLDwtq5o1UYQluucdsXk6/iB7YxEu0m6VofAEkUE=

Дополнительные сведения см. в разделе Аутентификация для служб хранилища Windows Azure. С другой стороны, если вы используете одну из клиентских библиотек Windows Azure Storage, она выполнит проверку подлинности за вас. Библиотеку .NET см. в нашем пакете NuGet.

person Serdar Ozler    schedule 26.02.2014

Для людей, переходящих на эту страницу и задающихся вопросом, почему вы получаете эту ошибку, даже если вы используете URL-адрес подписи общего доступа, скорее всего, вы отправляете токен ВАШЕГО ПРИЛОЖЕНИЯ в Azure. Убедитесь, что НЕ включаете заголовок Authorization в этом случае.

person jsgoupil    schedule 19.01.2019
comment
Ага. Я добавлял базовые заголовки аутентификации из чего-то другого и столкнулся с этим. - person Paul; 24.01.2019

После того, что сказал @jsgoupil:

Для людей, переходящих на эту страницу и задающихся вопросом, почему вы получаете эту ошибку, даже если вы используете URL-адрес подписи общего доступа, скорее всего, вы отправляете токен ВАШЕГО ПРИЛОЖЕНИЯ в Azure. Убедитесь, что НЕ включаете заголовок Authorization в этом случае.

Если у вас есть перехватчик, вы можете добавить пропуск к запросу, следуя инструкциям в этом сообщении stackOverflow: https://stackoverflow.com/a/49047764/5232022

export const InterceptorSkipHeader = 'X-Skip-Interceptor'; // <-- ADD THIS

@Injectable()
export class SkippableInterceptor implements HttpInterceptor {

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    // Add the following if to your interceptor
    if (req.headers.has(InterceptorSkipHeader)) {
      const headers = req.headers.delete(InterceptorSkipHeader);
      return next.handle(req.clone({ headers }));
    }

    ...  // intercept
  }

}

Затем всякий раз, когда вы хотите пропустить перехват для определенного запроса:

const headers = new HttpHeaders().set(InterceptorSkipHeader, ''); // <-- this will skip it

this.httpClient.get<ResponseType>(someUrl, { headers }) // <-- dont forget to add it here as well
person Daniel C    schedule 27.05.2020
comment
Спасибо - я сталкиваюсь с этой проблемой каждые несколько недель и всегда забываю, в чем проблема. :) - person RichS; 30.07.2020