Skip to content

Commit 3a7f255

Browse files
committed
Add Helpers to Request Rules
1 parent 5b77e86 commit 3a7f255

32 files changed

+401
-188
lines changed

src/Controllers/Admin/ClientController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ public function edit(Request $request): Response
299299
}
300300

301301
/**
302-
* TODO mivanci Move to ClientEntityFactory::fromRegistrationData on dynamic client registration implementation.
302+
* TODO v7 mivanci Move to ClientEntityFactory::fromRegistrationData on dynamic client registration implementation.
303303
* @throws \SimpleSAML\Module\oidc\Exceptions\OidcException
304304
*/
305305
protected function buildClientEntityFromFormData(

src/Controllers/Federation/EntityStatementController.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public function configuration(): Response
9595
)),
9696
ClaimsEnum::FederationFetchEndpoint->value =>
9797
$this->moduleConfig->getModuleUrl(RoutesEnum::FederationFetch->value),
98-
// TODO mivanci Add when ready. Use ClaimsEnum for keys.
98+
// TODO v7 mivanci Add when ready. Use ClaimsEnum for keys.
9999
// https://openid.net/specs/openid-federation-1_0.html#name-federation-entity
100100
//'federation_list_endpoint',
101101
//'federation_resolve_endpoint',
@@ -149,7 +149,7 @@ public function configuration(): Response
149149
$builder = $builder->withClaim(ClaimsEnum::TrustMarks->value, $trustMarks);
150150
}
151151

152-
// TODO mivanci Continue
152+
// TODO v7 mivanci Continue
153153
// Remaining claims, add if / when ready.
154154
// * crit
155155

@@ -235,14 +235,14 @@ public function fetch(Request $request): Response
235235
ClaimsEnum::PostLogoutRedirectUris->value => $client->getPostLogoutRedirectUri(),
236236
],
237237
)),
238-
// TODO mivanci Continue
238+
// TODO v7 mivanci Continue
239239
// https://openid.net/specs/openid-connect-registration-1_0.html#ClientMetadata
240240
// https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#client-metadata
241241
],
242242
],
243243
);
244244

245-
// TODO mivanci Continue
245+
// TODO v7 mivanci Continue
246246
// Note: claims which can be present in subordinate statements:
247247
// * metadata_policy
248248
// * constraints

src/Factories/RequestRulesManagerFactory.php

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -81,43 +81,62 @@ public function build(?array $rules = null): RequestRulesManager
8181
private function getDefaultRules(): array
8282
{
8383
return [
84-
new StateRule($this->requestParamsResolver),
84+
new StateRule($this->requestParamsResolver, $this->helpers),
8585
new ClientIdRule(
8686
$this->requestParamsResolver,
87+
$this->helpers,
8788
$this->clientRepository,
8889
$this->moduleConfig,
8990
$this->clientEntityFactory,
9091
$this->federation,
91-
$this->helpers,
9292
$this->jwksResolver,
9393
$this->federationParticipationValidator,
9494
$this->federationCache,
9595
),
96-
new RedirectUriRule($this->requestParamsResolver),
97-
new RequestObjectRule($this->requestParamsResolver, $this->jwksResolver),
98-
new PromptRule($this->requestParamsResolver, $this->authSimpleFactory, $this->authenticationService),
99-
new MaxAgeRule($this->requestParamsResolver, $this->authSimpleFactory, $this->authenticationService),
100-
new ScopeRule($this->requestParamsResolver, $this->scopeRepository, $this->helpers),
101-
new RequiredOpenIdScopeRule($this->requestParamsResolver),
102-
new CodeChallengeRule($this->requestParamsResolver),
103-
new CodeChallengeMethodRule($this->requestParamsResolver, $this->codeChallengeVerifiersRepository),
104-
new RequestedClaimsRule($this->requestParamsResolver, $this->claimTranslatorExtractor),
105-
new AddClaimsToIdTokenRule($this->requestParamsResolver),
106-
new RequiredNonceRule($this->requestParamsResolver),
107-
new ResponseTypeRule($this->requestParamsResolver),
108-
new IdTokenHintRule($this->requestParamsResolver, $this->moduleConfig, $this->cryptKeyFactory),
109-
new PostLogoutRedirectUriRule($this->requestParamsResolver, $this->clientRepository),
110-
new UiLocalesRule($this->requestParamsResolver),
111-
new AcrValuesRule($this->requestParamsResolver),
112-
new ScopeOfflineAccessRule($this->requestParamsResolver),
96+
new RedirectUriRule($this->requestParamsResolver, $this->helpers),
97+
new RequestObjectRule($this->requestParamsResolver, $this->helpers, $this->jwksResolver),
98+
new PromptRule(
99+
$this->requestParamsResolver,
100+
$this->helpers,
101+
$this->authSimpleFactory,
102+
$this->authenticationService,
103+
),
104+
new MaxAgeRule(
105+
$this->requestParamsResolver,
106+
$this->helpers,
107+
$this->authSimpleFactory,
108+
$this->authenticationService,
109+
),
110+
new ScopeRule($this->requestParamsResolver, $this->helpers, $this->scopeRepository),
111+
new RequiredOpenIdScopeRule($this->requestParamsResolver, $this->helpers),
112+
new CodeChallengeRule($this->requestParamsResolver, $this->helpers),
113+
new CodeChallengeMethodRule(
114+
$this->requestParamsResolver,
115+
$this->helpers,
116+
$this->codeChallengeVerifiersRepository,
117+
),
118+
new RequestedClaimsRule($this->requestParamsResolver, $this->helpers, $this->claimTranslatorExtractor),
119+
new AddClaimsToIdTokenRule($this->requestParamsResolver, $this->helpers),
120+
new RequiredNonceRule($this->requestParamsResolver, $this->helpers),
121+
new ResponseTypeRule($this->requestParamsResolver, $this->helpers),
122+
new IdTokenHintRule(
123+
$this->requestParamsResolver,
124+
$this->helpers,
125+
$this->moduleConfig,
126+
$this->cryptKeyFactory,
127+
),
128+
new PostLogoutRedirectUriRule($this->requestParamsResolver, $this->helpers, $this->clientRepository),
129+
new UiLocalesRule($this->requestParamsResolver, $this->helpers),
130+
new AcrValuesRule($this->requestParamsResolver, $this->helpers),
131+
new ScopeOfflineAccessRule($this->requestParamsResolver, $this->helpers),
113132
new ClientAuthenticationRule(
114133
$this->requestParamsResolver,
134+
$this->helpers,
115135
$this->moduleConfig,
116136
$this->jwksResolver,
117-
$this->helpers,
118137
$this->protocolCache,
119138
),
120-
new CodeVerifierRule($this->requestParamsResolver),
139+
new CodeVerifierRule($this->requestParamsResolver, $this->helpers),
121140
];
122141
}
123142
}

src/Server/RequestRules/Rules/AbstractRule.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@
44

55
namespace SimpleSAML\Module\oidc\Server\RequestRules\Rules;
66

7+
use SimpleSAML\Module\oidc\Helpers;
78
use SimpleSAML\Module\oidc\Server\RequestRules\Interfaces\RequestRuleInterface;
89
use SimpleSAML\Module\oidc\Utils\RequestParamsResolver;
910

1011
abstract class AbstractRule implements RequestRuleInterface
1112
{
12-
public function __construct(protected RequestParamsResolver $requestParamsResolver)
13-
{
13+
public function __construct(
14+
protected RequestParamsResolver $requestParamsResolver,
15+
protected Helpers $helpers,
16+
) {
1417
}
1518

1619
/**

src/Server/RequestRules/Rules/ClientAuthenticationRule.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ class ClientAuthenticationRule extends AbstractRule
2626

2727
public function __construct(
2828
RequestParamsResolver $requestParamsResolver,
29+
Helpers $helpers,
2930
protected ModuleConfig $moduleConfig,
3031
protected JwksResolver $jwksResolver,
31-
protected Helpers $helpers,
3232
protected ?ProtocolCache $protocolCache,
3333
) {
34-
parent::__construct($requestParamsResolver);
34+
parent::__construct($requestParamsResolver, $helpers);
3535
}
3636

3737
/**

src/Server/RequestRules/Rules/ClientIdRule.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,16 @@ class ClientIdRule extends AbstractRule
3434

3535
public function __construct(
3636
RequestParamsResolver $requestParamsResolver,
37+
Helpers $helpers,
3738
protected ClientRepository $clientRepository,
3839
protected ModuleConfig $moduleConfig,
3940
protected ClientEntityFactory $clientEntityFactory,
4041
protected Federation $federation,
41-
protected Helpers $helpers,
4242
protected JwksResolver $jwksResolver,
4343
protected FederationParticipationValidator $federationParticipationValidator,
4444
protected ?FederationCache $federationCache = null,
4545
) {
46-
parent::__construct($requestParamsResolver);
46+
parent::__construct($requestParamsResolver, $helpers);
4747
}
4848

4949
/**
@@ -132,8 +132,8 @@ public function checkRule(
132132
throw OidcServerException::invalidRequest(ParamsEnum::Request->value, 'Client ID is not valid URI.');
133133

134134
// We are ready to resolve trust chain.
135-
// TODO mivanci Request Object can contain trust_chain claim, so also implement resolving using that claim. Note
136-
// that this is only possible if we have JWKS configured for common TA, so we can check TA Configuration
135+
// TODO mivanci v7 Request Object can contain trust_chain claim, so also implement resolving using that claim.
136+
// Note that this is only possible if we have JWKS configured for common TA, so we can check TA Configuration
137137
// signature.
138138
try {
139139
$trustChain = $this->federation->trustChainResolver()->for(

src/Server/RequestRules/Rules/CodeChallengeMethodRule.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace SimpleSAML\Module\oidc\Server\RequestRules\Rules;
66

77
use Psr\Http\Message\ServerRequestInterface;
8+
use SimpleSAML\Module\oidc\Helpers;
89
use SimpleSAML\Module\oidc\Repositories\CodeChallengeVerifiersRepository;
910
use SimpleSAML\Module\oidc\Server\Exceptions\OidcServerException;
1011
use SimpleSAML\Module\oidc\Server\RequestRules\Interfaces\ResultBagInterface;
@@ -19,9 +20,10 @@ class CodeChallengeMethodRule extends AbstractRule
1920
{
2021
public function __construct(
2122
RequestParamsResolver $requestParamsResolver,
23+
Helpers $helpers,
2224
protected CodeChallengeVerifiersRepository $codeChallengeVerifiersRepository,
2325
) {
24-
parent::__construct($requestParamsResolver);
26+
parent::__construct($requestParamsResolver, $helpers);
2527
}
2628

2729
/**

src/Server/RequestRules/Rules/IdTokenHintRule.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Lcobucci\JWT\Validation\Constraint\SignedWith;
1111
use Psr\Http\Message\ServerRequestInterface;
1212
use SimpleSAML\Module\oidc\Factories\CryptKeyFactory;
13+
use SimpleSAML\Module\oidc\Helpers;
1314
use SimpleSAML\Module\oidc\ModuleConfig;
1415
use SimpleSAML\Module\oidc\Server\Exceptions\OidcServerException;
1516
use SimpleSAML\Module\oidc\Server\RequestRules\Interfaces\ResultBagInterface;
@@ -25,10 +26,11 @@ class IdTokenHintRule extends AbstractRule
2526
{
2627
public function __construct(
2728
RequestParamsResolver $requestParamsResolver,
29+
Helpers $helpers,
2830
protected ModuleConfig $moduleConfig,
2931
protected CryptKeyFactory $cryptKeyFactory,
3032
) {
31-
parent::__construct($requestParamsResolver);
33+
parent::__construct($requestParamsResolver, $helpers);
3234
}
3335

3436
/**
@@ -56,7 +58,7 @@ public function checkRule(
5658
return new Result($this->getKey(), $idTokenHintParam);
5759
}
5860

59-
// TODO mivanci Fix: unmockable services... inject instead.
61+
// TODO v7 mivanci Fix: unmockable services... inject instead.
6062
$privateKey = $this->cryptKeyFactory->buildPrivateKey();
6163
$publicKey = $this->cryptKeyFactory->buildPublicKey();
6264
/** @psalm-suppress ArgumentTypeCoercion */

src/Server/RequestRules/Rules/MaxAgeRule.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Psr\Http\Message\ServerRequestInterface;
88
use SimpleSAML\Module\oidc\Factories\AuthSimpleFactory;
9+
use SimpleSAML\Module\oidc\Helpers;
910
use SimpleSAML\Module\oidc\Server\Exceptions\OidcServerException;
1011
use SimpleSAML\Module\oidc\Server\RequestRules\Interfaces\ResultBagInterface;
1112
use SimpleSAML\Module\oidc\Server\RequestRules\Interfaces\ResultInterface;
@@ -21,10 +22,11 @@ class MaxAgeRule extends AbstractRule
2122
{
2223
public function __construct(
2324
RequestParamsResolver $requestParamsResolver,
25+
Helpers $helpers,
2426
private readonly AuthSimpleFactory $authSimpleFactory,
2527
private readonly AuthenticationService $authenticationService,
2628
) {
27-
parent::__construct($requestParamsResolver);
29+
parent::__construct($requestParamsResolver, $helpers);
2830
}
2931

3032
/**

src/Server/RequestRules/Rules/PostLogoutRedirectUriRule.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace SimpleSAML\Module\oidc\Server\RequestRules\Rules;
66

77
use Psr\Http\Message\ServerRequestInterface;
8+
use SimpleSAML\Module\oidc\Helpers;
89
use SimpleSAML\Module\oidc\Repositories\ClientRepository;
910
use SimpleSAML\Module\oidc\Server\Exceptions\OidcServerException;
1011
use SimpleSAML\Module\oidc\Server\RequestRules\Interfaces\ResultBagInterface;
@@ -19,9 +20,10 @@ class PostLogoutRedirectUriRule extends AbstractRule
1920
{
2021
public function __construct(
2122
RequestParamsResolver $requestParamsResolver,
23+
Helpers $helpers,
2224
protected ClientRepository $clientRepository,
2325
) {
24-
parent::__construct($requestParamsResolver);
26+
parent::__construct($requestParamsResolver, $helpers);
2527
}
2628

2729
/**

0 commit comments

Comments
 (0)