Azure Storage REST API에 대한 개념 증명 및 테스트를 수행했습니다. 그러나 인증 할 수 없습니다. 나는 하루 종일 독서와 조정 및 재 작성으로 노력했지만 여전히 효과가 없습니다. 나는 단계별로 문서화 단계를 밟아왔다.Azure Blob 저장소 REST API 서명
나는 이것을 관리해 준 사람을 찾고 싶습니다. 하드 코드 된 비트가 많아서 작동시키기 만하면됩니다. 나는 '어떤 계산 된 서명
사람이 어쩌면 내 얼굴을 쳐다보고 무엇을 볼 수와 동일하지 않습니다 응답에 다시 HTTP 요청'에있는
MAC 서명이 오류가 계속? 나를 미치게 만들었다.
var requestDateString = DateTime.UtcNow.ToString("R", CultureInfo.InvariantCulture); var StorageAccountName = "<account removed>"; var StorageKey = "<key removed>"; using (var client = new HttpClient()) { var stringToSign = new List<string>(){ "GET" /*HTTP Verb*/ ,"" /*Content-Encoding*/ ,"" /*Content-Language*/ ,"" /*Content-Length (include value when zero)*/ ,"" /*Content-MD5*/ ,"" /*Content-Type*/ ,"" /*Date*/ ,"" /*If-Modified-Since */ ,"" /*If-Match*/ ,"" /*If-None-Match*/ ,"" /*If-Unmodified-Since*/ ,"" /*Range*/ ,$"x-ms-date:{requestDateString}\nx-ms-version:2015-02-21" /*CanonicalizedHeaders*/ ,$"/{StorageAccountName}/ " + _containerName + "\ncomp:metadata\nrestype:container\ntimeout:20" /*CanonicalizedResource*/ }; string signature; using (var hmac = new HMACSHA256(Convert.FromBase64String(StorageKey))) { var compiledStringToSign = (string.Join("\n", stringToSign)); byte[] dataToHmac = Encoding.UTF8.GetBytes(compiledStringToSign); signature = Convert.ToBase64String(hmac.ComputeHash(dataToHmac)); } //Send Request client.DefaultRequestHeaders.Add("x-ms-date", requestDateString); client.DefaultRequestHeaders.Add("x-ms-version", " 2015-02-21"); client.DefaultRequestHeaders.Add("Authorization", $"SharedKey {StorageAccountName}:" + signature); var response = client.SendAsync(request);
// 편집 요청 URL 내가 정말하지만 그것을 볼 수 없습니다, 나는 오류가 서명에 있어야합니다 생각 때문에 https://account.blob.core.windows.net/testcontainer/blobtest/blob1234
오류가 인증 실패에 대한 매우 구체적이다. 나는 그들이 일치하는지 확인하기 위해 모든 출력물을 검사했다.
내가 물어 봐도 될까요? –
SDK가 없는데 파이썬에서 이것을 구현했습니다. AFAIK C# SDK는 GitHub의 오픈 소스이며 코드를 검토 할 수 있습니다. 2 년 전 구현이 매우 읽기 쉽습니다. –
요청 URL을 공유 할 수 있습니까? –