Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[Security] Use new IS_* attributes in the expression language functions#35854

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

Merged
fabpot merged 1 commit intosymfony:masterfromwouterj:patch-14
Feb 25, 2020

Conversation

wouterj
Copy link
Member

@wouterjwouterj commentedFeb 24, 2020
edited
Loading

QA
Branch?master
Bug fix?no
New feature?no
Deprecations?no
Ticketsn/a
LicenseMIT
Doc PRn/a

#31189 has been merged which introduces some new attributes (IS_ANONYMOUS & friends). We can now modify the code behind theis_*() expression language functions to use these new attributes. This avoids any possibility of having them out of sync.

In case you - just like me - are interested whyisGranted("IS_AUTHENTICATED_FULLY") wasn't used before: These functions were implemented withoutauth_checker being available. The auth checker variable was introduced in 4.2 by#27305, so now we can use this.

@wouterjwouterj changed the titleUse new IS_* attributes in the expression language functions[Security] Use new IS_* attributes in the expression language functionsFeb 24, 2020
@wouterjwouterj marked this pull request as ready for reviewFebruary 25, 2020 11:54
Copy link
Member

@chalasrchalasr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

👍

@fabpot
Copy link
Member

Thank you@wouterj.

@fabpotfabpot merged commita4c0bfa intosymfony:masterFeb 25, 2020
fabpot added a commit that referenced this pull requestMay 3, 2020
…m (wouterj)This PR was merged into the 5.1-dev branch.Discussion----------[Security] Removed anonymous in the new security system| Q             | A| ------------- | ---| Branch?       | master| Bug fix?      | no| New feature?  | yes| Deprecations? | no| Tickets       | -| License       | MIT| Doc PR        | tbdThis was one of the "Future considerations" of#33558:> Drop the AnonymousToken and AnonymousAuthenticator: Anonymous authentication has never made much sense and complicates things (e.g. the user can be a string). For access control, an anonymous user has the same meaning as an un-authenticated one (null). This require changes in the AccessListener and AuthorizationChecker and probably also a new Security attribute (to replace IS_AUTHENTICATED_ANONYMOUSLY). Related issues:#34909,#30609This new experimental system is probably a once-in-a-lifetime change to make this change.@weaverryan and I have had some brainstorming about this. Some reasons why we think it makes 100% sense to do this change:* From a Security perspective, **a user that is not authenticated is similar to an "unknown" user**: They both have no rights at all.* **The higher level consequences of the AnonymousToken are confusing and inconsistent**:  * It's hard to explain people new to Symfony Security that not being logged in still means you're authenticated within the Symfony app  * To counter this, some higher level APIs explicitly mark anonymous tokens as not being authenticated, see e.g. the [`is_authenticated()` expression language function](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Security/Core/Authorization/ExpressionLanguageProvider.php#L33-L37)  * The anonymous authentication resulted in the `IS_AUTHENTICATED` security attribute being removed from#35854, as there was no clear consensus on what its meaning should be* **Spring Security, which is where this originated from, makes Anonymous a very special case**:  > Finally, there is an AnonymousAuthenticationFilter, which is chained after the normal authentication mechanisms and automatically adds an AnonymousAuthenticationToken to the SecurityContextHolder if there is no existing Authentication held there.  >  > Note that there is no real conceptual difference between a user who is “anonymously authenticated” and an unauthenticated user. Spring Security's anonymous authentication just gives you a more convenient way to configure your access-control attributes. Calls to servlet API calls such as getCallerPrincipal, for example, will still return null even though there is actually an anonymous authentication object in the SecurityContextHolder.* Symfony uses AnonymousToken much more than "just for convience in access-control attributes". **Removing anonymous tokens allows us to move towards only allowing `UserInterface` users**:#34909---Removing anonymous tokens do have an impact on `AccessListener` and `AuthorizationChecker`. These currently throw an exception if there is no token in the storage, instead of treating them like "unknown users" (i.e. no roles). See#30609 on a RFC about removing this exception. We can also see e.g. the [Twig `is_granted()` function explicitly catching this exception](https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Extension/SecurityExtension.php#L37-L52).* **To make the changes in `AccessListener` and `AuthorizationChecker` BC, a flag has been added - default enabled - to throw an exception when no token is present** (which is automatically disabled when the new system is used). In Symfony 5.4 (or whenever the new system is no longer experimental), we can deprecate this flag and in 6.0 we can never throw the exception anymore.* **`anonymous: lazy` has been deprecated in favor of `{ anonymous: true, lazy: true }`** This fixes the dependency on `AnonymousFactory` from the `SecurityExtension` and allows removing the `anonymous` option.* **Introduced `PUBLIC_ACCESS` Security attribute** as alternative of `IS_AUTHENTICATED_ANONYMOUSLY`. Both work in the new system, the latter only triggers a deprecation notice (but may be usefull to allow switching back and forth between old and new system).cc@javiereguiluz you might be interested, as I recently talked with you about this topicCommits-------ac84a6c Removed AnonymousToken from the authenticator system
@nicolas-grekasnicolas-grekas modified the milestones:next,5.1May 4, 2020
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@fabpotfabpotfabpot approved these changes

@chalasrchalasrchalasr approved these changes

Assignees
No one assigned
Projects
None yet
Milestone
5.1
Development

Successfully merging this pull request may close these issues.

5 participants
@wouterj@fabpot@chalasr@nicolas-grekas@carsonbot

[8]ページ先頭

©2009-2025 Movatter.jp