Merge pull request #26572 from nextcloud/bugfix/noid/throw-401-when-authentication-is-provided-and-invalid
Throw "401 Unauthenticated" when authentication is provided but invalid
This commit is contained in:
commit
c52a026f55
|
@ -138,7 +138,13 @@ class RemoteContext implements Context {
|
||||||
* @param string $value
|
* @param string $value
|
||||||
*/
|
*/
|
||||||
public function hasCapability($key, $value) {
|
public function hasCapability($key, $value) {
|
||||||
$capabilities = $this->getApiClient()->getCapabilities();
|
try {
|
||||||
|
$capabilities = $this->getApiClient()->getCapabilities();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
Assert::assertInstanceOf($value, $e);
|
||||||
|
$this->lastException = $e;
|
||||||
|
return;
|
||||||
|
}
|
||||||
$current = $capabilities;
|
$current = $capabilities;
|
||||||
$parts = explode('.', $key);
|
$parts = explode('.', $key);
|
||||||
foreach ($parts as $part) {
|
foreach ($parts as $part) {
|
||||||
|
|
|
@ -34,4 +34,5 @@ Feature: remote
|
||||||
Given using remote server "REMOTE"
|
Given using remote server "REMOTE"
|
||||||
And user "user0" exists
|
And user "user0" exists
|
||||||
And using credentials "user0", "invalid"
|
And using credentials "user0", "invalid"
|
||||||
Then the capability "theming.name" is "Nextcloud"
|
Then the capability "theming.name" is "OC\ForbiddenException"
|
||||||
|
Then the request should throw a "OC\ForbiddenException"
|
||||||
|
|
|
@ -599,6 +599,8 @@ class Session implements IUserSession, Emitter {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
// If credentials were provided, they need to be valid, otherwise we do boom
|
||||||
|
throw new LoginException();
|
||||||
} catch (PasswordLoginForbiddenException $ex) {
|
} catch (PasswordLoginForbiddenException $ex) {
|
||||||
// Nothing to do
|
// Nothing to do
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,15 +32,16 @@ use OC\AppFramework\Bootstrap\ServiceRegistration;
|
||||||
use OC\Authentication\TwoFactorAuth\ProviderLoader;
|
use OC\Authentication\TwoFactorAuth\ProviderLoader;
|
||||||
use OCP\App\IAppManager;
|
use OCP\App\IAppManager;
|
||||||
use OCP\Authentication\TwoFactorAuth\IProvider;
|
use OCP\Authentication\TwoFactorAuth\IProvider;
|
||||||
|
use OCP\IUser;
|
||||||
use PHPUnit\Framework\MockObject\MockObject;
|
use PHPUnit\Framework\MockObject\MockObject;
|
||||||
use Test\TestCase;
|
use Test\TestCase;
|
||||||
|
|
||||||
class ProviderLoaderTest extends TestCase {
|
class ProviderLoaderTest extends TestCase {
|
||||||
|
|
||||||
/** @var IAppManager|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var IAppManager|MockObject */
|
||||||
private $appManager;
|
private $appManager;
|
||||||
|
|
||||||
/** @var \OCP\IUser|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var IUser|MockObject */
|
||||||
private $user;
|
private $user;
|
||||||
|
|
||||||
/** @var RegistrationContext|MockObject */
|
/** @var RegistrationContext|MockObject */
|
||||||
|
@ -53,7 +54,7 @@ class ProviderLoaderTest extends TestCase {
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
$this->appManager = $this->createMock(IAppManager::class);
|
$this->appManager = $this->createMock(IAppManager::class);
|
||||||
$this->user = $this->createMock(\OCP\IUser::class);
|
$this->user = $this->createMock(IUser::class);
|
||||||
|
|
||||||
$this->registrationContext = $this->createMock(RegistrationContext::class);
|
$this->registrationContext = $this->createMock(RegistrationContext::class);
|
||||||
$coordinator = $this->createMock(Coordinator::class);
|
$coordinator = $this->createMock(Coordinator::class);
|
||||||
|
@ -123,7 +124,7 @@ class ProviderLoaderTest extends TestCase {
|
||||||
->with($this->user)
|
->with($this->user)
|
||||||
->willReturn([]);
|
->willReturn([]);
|
||||||
|
|
||||||
$this->registrationContext->method('getTwoFactorProvider')
|
$this->registrationContext->method('getTwoFactorProviders')
|
||||||
->willReturn([
|
->willReturn([
|
||||||
new ServiceRegistration('twofactor_test', '\\OCA\\TwoFactorTest\\Provider')
|
new ServiceRegistration('twofactor_test', '\\OCA\\TwoFactorTest\\Provider')
|
||||||
]);
|
]);
|
||||||
|
|
Loading…
Reference in New Issue