diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2018-04-23 19:32:41 +0200 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2018-04-23 19:34:09 +0200 |
commit | ba71918ad2f6fb336852fd492e5e819eb38201c9 (patch) | |
tree | ed42b73780dfc487f6fc115d16f00f7864b3ee4f | |
parent | 000f41ba01f7ebb0972e5f5509ebc66931083702 (diff) | |
download | nextcloud-server-ba71918ad2f6fb336852fd492e5e819eb38201c9.tar.gz nextcloud-server-ba71918ad2f6fb336852fd492e5e819eb38201c9.zip |
Swift v3 requires setting a scope
Unscoped auth is not guaranteed to return a catalog. So require the
scope to be set properly.
See https://developer.openstack.org/api-ref/identity/v3/index.html#password-authentication-with-unscoped-authorization
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
-rw-r--r-- | config/config.sample.php | 10 | ||||
-rw-r--r-- | lib/private/Files/ObjectStore/SwiftFactory.php | 4 |
2 files changed, 13 insertions, 1 deletions
diff --git a/config/config.sample.php b/config/config.sample.php index b0ed2e7aa67..7af3688b846 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -1235,10 +1235,18 @@ $CONFIG = array( 'name' => 'default', ], ], + 'scope' => [ + 'project' => [ + 'name' => 'service', + 'domain' => [ + 'name' => 'default', + ], + ], + ], 'tenantName' => 'service', 'serviceName' => 'swift', 'region' => 'regionOne', - 'url' => "http://yourswifthost:5000/v3", + 'url' => 'http://yourswifthost:5000/v3', 'bucket' => 'nextcloud', ], ], diff --git a/lib/private/Files/ObjectStore/SwiftFactory.php b/lib/private/Files/ObjectStore/SwiftFactory.php index 85bba573001..caa4774daba 100644 --- a/lib/private/Files/ObjectStore/SwiftFactory.php +++ b/lib/private/Files/ObjectStore/SwiftFactory.php @@ -108,6 +108,10 @@ class SwiftFactory { ]); if (isset($this->params['user']) && isset($this->params['user']['name'])) { + if (!isset($this->params['scope'])) { + throw new StorageAuthException('Scope has to be defined for V3 requests'); + } + return $this->auth(IdentityV3Service::factory($httpClient), $cacheKey); } else { return $this->auth(IdentityV2Service::factory($httpClient), $cacheKey); |