Implemented device code grant

This commit is contained in:
ErickSkrauch
2024-12-08 16:54:45 +01:00
parent c7d192d14e
commit 2cc27d34ad
28 changed files with 665 additions and 171 deletions

View File

@@ -8,6 +8,9 @@ use common\components\OAuth2\Repositories\PublicScopeRepository;
class OauthSteps extends FunctionalTester {
/**
* @param string[] $permissions
*/
public function obtainAuthCode(array $permissions = []): string {
$this->amAuthenticated();
$this->sendPOST('/api/oauth2/v1/complete?' . http_build_query([
@@ -23,6 +26,9 @@ class OauthSteps extends FunctionalTester {
return $matches[1];
}
/**
* @param string[] $permissions
*/
public function getAccessToken(array $permissions = []): string {
$authCode = $this->obtainAuthCode($permissions);
$response = $this->issueToken($authCode);
@@ -30,6 +36,9 @@ class OauthSteps extends FunctionalTester {
return $response['access_token'];
}
/**
* @param string[] $permissions
*/
public function getRefreshToken(array $permissions = []): string {
$authCode = $this->obtainAuthCode(array_merge([PublicScopeRepository::OFFLINE_ACCESS], $permissions));
$response = $this->issueToken($authCode);
@@ -37,6 +46,9 @@ class OauthSteps extends FunctionalTester {
return $response['refresh_token'];
}
/**
* @return array<string, mixed>
*/
public function issueToken(string $authCode): array {
$this->sendPOST('/api/oauth2/v1/token', [
'grant_type' => 'authorization_code',
@@ -49,6 +61,9 @@ class OauthSteps extends FunctionalTester {
return json_decode($this->grabResponse(), true);
}
/**
* @param string[] $permissions
*/
public function getAccessTokenByClientCredentialsGrant(array $permissions = [], bool $useTrusted = true): string {
$this->sendPOST('/api/oauth2/v1/token', [
'grant_type' => 'client_credentials',