2014-02-26 3 views
1

Rackspace 클라우드 관리 포털에서 Cloud Files 서비스에만 액세스 할 수있는 사용자를 만들었습니다.이 사용자로 포털에 로그인하면 모든 것이 잘 작동합니다. 계정은 예상대로 파일 탭에 대한 액세스 권한 만 제공됩니다. 그리고 UI에서 파일을 생성 /보기/삭제할 수 있습니다.openstack.net을 사용하여 Rackspace에서 클라우드 파일에 제한된 사용자 인증

하지만 openstack.net 라이브러리를 사용하여 코드에서이 사용자를 인증 할 수 없습니다. 내 기본 사용자와 동일한 시도하고 인증 내 코드에서 잘 작동합니다. 그러나 보안 문제로 인해 응용 프로그램에서 기본 사용자 API 키를 사용하는 것은 옵션이 아닙니다.

  var identity = 
      new CloudIdentity() 
      { 
       Username = "username", 
       APIKey = "apikey", 
      }; 

      var storage = new CloudFilesProvider(identity); 

      storage.CreateObject("sitefiles", inputStream, fileName); 

내가 예외가 내 관찰 오늘을 바탕으로

답변

2

글쎄, 나는 동일한 문제에 직면했다. 그러나 나는 username, apikey, password를 제공했지만 작동하지 않았다. 사용자가 액세스 할 수 있도록 지역을 지정해야한다는 것을 알았습니다. like :

 var identity = 
     new CloudIdentity() 
     { 
      Username = "username", 
      APIKey = "apikey", 
     }; 

     var storage = new CloudFilesProvider(identity); 

     storage.CreateObject("sitefiles", inputStream, fileName, region: "LON"); 

시도해보십시오.

+0

오늘 같은 문제에 직면했지만 지역을 지정하지 않아도 문제가 없었습니다. 이상한 점은 내가 Rackspace에서 변경 로그를 찾을 수 없다는 것입니다. – prashant

0

"사용자가 요청한 서비스 나 지역에 액세스 할 수 없습니다", 사용자 이름 + API 키 인증을 통해 생성 된 사용자에 대해 작동하지 않는 것 같습니다 사용자 관리 기능. 그러나 이러한 사용자의 경우 클라우드 파일과 같은 기능에 API 액세스를 위해 사용자 이름 + 비밀번호 인증을 사용할 수 있습니다.

0

UI를 통해 만든 사용자 (즉, 하위 계정)는 자신의 신원을 통해 에 올바른 DefaultRegion을 설정하지 않은 것으로 보입니다. 당신이 있다면 위의 모하메드의 예제를 사용합니다 :

var identity = 
new CloudIdentity() 
{ 
    Username = "username", 
    APIKey = "apikey", 
}; 

var storage = new CloudFilesProvider(identity); 

Console.Write(storage.DefaultRegion); // is always null 

당신이 부모 계정 (즉, 루트 계정)는 DefaultRegion가 올바르게 설정 될이 작업을 수행한다면.

Mohamed가 지적했듯이 API 호출에서 수동으로 영역을 설정할 수 있습니다. 하위 계정에 대한 다른 해결 방법은 없습니다. 버그 인 것 같습니다.