2016-11-10 2 views
0

Java 용 SDK를 사용하여 SAS를 작성하여 blob에 액세스합니다. 이 코드입니다 :Azure java : 지정된 서명 된 식별자에 대해 SAS 식별자를 찾을 수 없습니다.

<Error> 
<Code>AuthenticationFailed</Code> 
<Message> 
Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. RequestId:f1f169d2-0001-003f-115a-3be1d6000000 Time:2016-11-10T13:57:14.6192554Z 
</Message> 
<AuthenticationErrorDetail> 
SAS identifier cannot be found for specified signed identifier 
</AuthenticationErrorDetail> 
</Error> 

나도 같은 BLOB에 대한 NET에서 같은 일을하고 있어요 :

SharedAccessBlobPolicy policy = new SharedAccessBlobPolicy(); 
policy.setPermissionsFromString("r"); 
Calendar date = Calendar.getInstance(); 
Date expire = new Date(date.getTimeInMillis() + (expirationMinutes * 60000)); 
Date start = new Date(date.getTimeInMillis()); 
policy.setSharedAccessExpiryTime(expire); 
policy.setSharedAccessStartTime(start); 
return blob.getUri().toString()+"?"+blob.generateSharedAccessSignature(policy, externalFileName); 

하지만 난이 오류가 블롭에 액세스하는 URL을 사용하려고하면 (자바)

가 작동하지 않습니다 : (작동)는 결과 URL은 하나의 내가 여기 얻을 다른

/mycontainer/privadoPrueba/cat1.jpg?sig=FFLVk%2FPViHBZhH1JIW6wBbWiJ0%2Bgz0U8wjFzgRoytNo%3D&st=2016-11-10T13%3A55%3A06Z&se=2016-11-10T14%3A06%3A06Z&sv=2015-07-08&si=privadoPrueba%2Fcat1.jpg&sp=r&sr=b 
,536,913,632 10

작동 (NET) :

/mycontainer/privadoPrueba/cat1.jpg?sv=2015-07-08&sr=b&sig=WyiJWltZFj1AkkzST6mo2NjBF1tRSXxrkMP5LEAGJNk%3D&st=2016-11-10T14%3A05%3A41Z&se=2016-11-10T14%3A16%3A41Z&sp=r 

어떻게 해결할 수 있습니까?

+0

, 당신은 하나가 작동하는 알 수 있습니까? –

+0

두 번째 질문은 질문에 추가하겠습니다. – moondaisy

답변

2

SAS 토큰을 보면 파일 이름이있는 정책을 지정하고 있습니다. 아마 당신이하고 싶지 않았고 .NET SAS 토큰에 없습니다. 이 API는 .NET과 비슷한 경우

blob.generateSharedAccessSignature(policy, externalFileName); 

두 번째 매개 변수는, 아마도 정책의 이름입니다

문제

는 것 같아요 여기에있다.

대신이 시도 : 당신이 위에서 언급 한 두 개의 SAS의 URL을

blob.generateSharedAccessSignature(policy, null); 
+0

감사합니다. 문제였습니다. – moondaisy