Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.6k
[Security] Add ability for authenticators to explain why they didn’t support a request#60538
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:7.4
Are you sure you want to change the base?
Conversation
a175f93
tob0cdff7
Compare@@ -11,6 +11,7 @@ CHANGELOG | |||
* Add support for closures in `#[IsGranted]` | |||
* Add `OAuth2TokenHandler` with OAuth2 Token Introspection support for `AccessTokenAuthenticator` | |||
* Add discovery support to `OidcTokenHandler` and `OidcUserInfoTokenHandler` | |||
* Add ability for authenticators to explain why they support the request or not |
OskarStarkMay 25, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
* Add ability for authenticators to explain why they support the request or not | |
* Add ability for authenticators to explain why theydo notsupport the request |
If they support it, no reason is set, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
s/does/do
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Updated, thanks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
If they support it, no reason is set, right?
I was not sure if the userland could benefit from it, but since it is only displayed when the authenticator doesn’t support the request let’s not advertise it indeed.
12f9679
tocc4097b
Compare This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
541085e
to66af8a6
CompareThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Nice :)
I'm just wondering about the name. What aboutRequestDecision
instead?
Why not; then what about
|
nicolas-grekas commentedMay 30, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
It'd say $requestDecision and $decisionReasons. |
MatTheCat commentedMay 30, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
It wouldn’t serve any purpose in the current state of this PR but yes. The problem I have with |
$requestDecisionReasons? |
f4ade34
to0cecef5
CompareFine by me; just pushed the changes. |
0cecef5
to9bdf856
CompareThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
One more iteration :)
Uh oh!
There was an error while loading.Please reload this page.
class RequestDecision | ||
{ | ||
publicbool$support; | ||
public ?bool$lazy =null; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
when is this used? what could be built with that?
public?bool$lazy =null; | |
public bool$isLazy; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I planned to use this class for firewall listeners.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Oh, so let's remove it from this PR and add it in the one about listeners then.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Should theTraceableAuthenticator
set them then?
Uh oh!
There was an error while loading.Please reload this page.
if ($this->supports === false) { | ||
$requestDecision->support = false; | ||
} else { | ||
$requestDecision->support = true; | ||
$requestDecision->lazy = null === $this->supports; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
if ($this->supports ===false) { | |
$requestDecision->support =false; | |
}else { | |
$requestDecision->support =true; | |
$requestDecision->lazy =null ===$this->supports; | |
} | |
$requestDecision->isSupported =false !==$this->supports; | |
$requestDecision->isLazy =null ===$this->supports; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I thinkisLazy
should staynull
if the request is not supported.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
the decision was not lazy, so why?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Causelazy
only makes sense if the request is supported.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
BTW it is not the decision which is lazy but the request support; not sure about this naming then 🤔
9bdf856
tof7520a5
Comparef7520a5
to50a70cb
Compare
Uh oh!
There was an error while loading.Please reload this page.
Inspired by#59771 this PR allows authenticators to advertise why they didn’t support a request by passing a new
RequestSupport
argument to theirsupports
method. Calling itsaddReason
method will cause the profiler to display them:If this is accepted, this will pave the way for firewall listeners to expose informations about their calls to
supports
(this is why theRequestSupport
class also holds$result
and$lazy
properties) andauthenticate
, thus closing#36668.