Hi Rodrigo,

I fully agree to all your points. You totally got my points and concerns and as far as I understood your explanations, that's exactly what I was pointing to as addition to the protocol instead of letting all further protocols that my evolve in the future implement such validation for authentication by them self.

On 8/15/23 19:40, Rodrigo Speller wrote:
I read all the comments carefully while flying through Brazil, and I confess that my reasoning from the beginning tended to say that the OAuth trust model is “as is” and that the main point of the trust relationship is between the AS and the RO (in this case, a user).

At various times, while reading, I agreed that Matthias' question was about a problem that would not fit directly into the OAuth Framework, as I understood that the central point in question was authentication and not authorization. But I refused to accept that my point of view would be correct due to the avalanche of exposed reasoning that contributed to my understanding and that even so, Matthias insisted on making himself understood by different approaches, leading to believe that he understood the answers, but still did not was convinced that we had understood this problem in essence.

So, during the flight, I reflected on Matthias' insistence: "What could we be missing?" Brilliantly, I think Matthias raised a very important and fixable point: “That the user MUST allow the connection on both sides on the client and on the provider.”

As is known here, OAuth 2.0 is not a ready-to-use protocol, but a framework that is constantly evolving, it is specified by multiple RFCs and its main implementation is the OpenID Connect 1.0 layer, which is also under development. I say this because I believe the solution to this point raised by Matthias would result in a Zero-Trust Authorization Grant with great value to the protocol, as it would reinforce user authorization so that the AS could authorize client applications.

In this grant type, the AS would ask the user to sign evidence tokens to authorize client application access in the authentication/consent phase. Of course, this flow would require some restrictions to maintain a high degree of security, such as: Generation and storage of user signature keys; Form of registration of the signature verification key with the AS; Transport of authorization evidence to the client application; Transporting the evidence token signature verification key to the client application; etc;

I believe that a Zero-Trust Grant Type with a model similar to the one above would be very useful for Web 3, financial applications (FAPI / Open Banking), etc. It would also encourage the use of private keys to authenticate users in these environments, making room for the signing of operational tokens in the future (out of scope).

Therefore, I ask Matthias to validate and complement, if possible, my point of view. And I invite this group to start an effort to draft this Grant Type with me.


Em qui., 10 de ago. de 2023 às 22:21, Michael Jones <michael_b_jo...@hotmail.com> escreveu:

    I HIGHLY recommend the authoritative blog post on the subject
    “OAuth 2.0 and Sign-In”, written by a dear friend to many of us,
    Vittorio Bertocci, just over a decade ago.  While Microsoft took
    it down, it lives on in the Wayback Machine at
    
http://web.archive.org/web/20130105031040/http://blogs.msdn.com/b/vbertocci/archive/2013/01/02/oauth-2-0-and-sign-in.aspx
    
<http://web.archive.org/web/20130105031040/http:/blogs.msdn.com/b/vbertocci/archive/2013/01/02/oauth-2-0-and-sign-in.aspx>.
    It authoritatively covers much of the ground in our current
    discussion.

    Read and enjoy!

    -- Mike

    *From:* OAuth <oauth-boun...@ietf.org> *On Behalf Of * Dick Hardt
    *Sent:* Thursday, August 10, 2023 5:46 PM
    *To:* Matthias Fulz <mf...@olznet.de>
    *Cc:* oauth@ietf.org
    *Subject:* Re: [OAUTH-WG] OAuth Trust model

    Sorry -- I have not read this thread in depth, so if you have
    another crisp example, please send.

    Your description sounds like an identity problem and not an
    authorization problem. OAuth solves the latter, and it is a
    feature that the RS does need to know the client, only that the
    client is authorized.

    To fit that into your analogy, anyone the school deems authorized
    to pick up the kid is authorized to pick up the kid. If you don't
    like how the school decides that, don't send your kid to that
    school, or work to change the school's policy.

    On Thu, Aug 10, 2023 at 4:41 PM Matthias Fulz <mf...@olznet.de> wrote:

        I'm running out of ideas to get the point explained...

        Ok let's try it from an abstract view:

        Think about a school where your kid is allowed to get picked
        up by a legitimated list of persons -> ok

        Now think about the school saying I'm trusting a third party
        about identifying any person on that list, without asking the
        person about that this third party is allowed to identify this
        person.

        The problem is, that by design the person who's identity is to
        be verified has no control about what AS is allowed by the
        site to verify the identity.

        Sorry for that stupid example but I'm really not able to
        explain the issue in another way anymore :(

        On 8/11/23 00:02, Dick Hardt wrote:

            This sentence does not make sense to me "which AS is
            AUTHORIZED at which RS acting as the user"

            The RS server has delegated authorization decisions to the AS

            The client is acting as the user

            On Thu, Aug 10, 2023 at 2:59 PM Matthias Fulz
            <mf...@olznet.de> wrote:

                I can follow your point but please try to think from a
                different perspective:

                As authorization protocol, how can it not let the user
                decide which AS is AUTHORIZED at which RS acting as
                the user?

                On 8/10/23 23:28, Dick Hardt wrote:

                    "auth providers" is an extremely confusing term.

                    OAuth has no involvement in the content an RS
                    provides the client -- the AS only provides
                    authorization to access the content at the RS.

                    It is common that the AS and RS are the same
                    entity, but the protocol is designed to have a
                    separation of concerns so that they are acting
                    independently.

                    From what I can understand in your discussion, you
                    are wanting OAuth to do something it is not
                    designed for.

                    On Thu, Aug 10, 2023 at 2:03 PM Matthias Fulz
                    <mf...@olznet.de> wrote:

                        On 8/10/23 10:25, Warren Parad wrote:

                            You've lost me at this:

                                Some site, which I'm registered in is
                                trusting some oauth provider I'm not
                                even knowing about. I'm not registered
                                at this provider. If this provider is
                                (independent how or from whom) is used
                                in a malicious way, they can access my
                                account, without my knowledge by
                                sending a valid token including my email.

                            Nothing stops a site you are using,
                            registered with your email address, from
                            just selling your data to a third party,
                            or blanket publishing it publicly. There
                            is nothing we can do to stop this unless
                            the data we care about is encrypted on the
                            client side. OAuth doesn't really have
                            anything to do with it.

                        Yes but that's the point: The site itself has
                        to do it. If they are not willing to it's ok.

                        But: With the actual concept using auth
                        providers, even if the the site is NOT willing
                        to sell it, my account could be accessed by
                        using the trusted auth provider without the
                        site itself needs to do anything. And the
                        problem is, that such sites wouldn't be
                        technically forced to use such auth providers
                        by active permission granting from user side.

                        That's the difference I'm trying to point at.

                        Sorry I'm really struggling to explain it in
                        another way (will think about).

                            Because it has nothing to do with OAuth,
                            the suggested solution of course must have
                            a hole with it. And indeed it does. What
                            if the site offers the token strategy, but
                            then decides to outsource the whole
                            authentication process to a different
                            third party? We are back at the same
                            problem again. However it sounds like what
                            you are saying is that there should be a
                            standardized mechanism for handling the
                            site <=> user token verification. If we
                            use OAuth terminology that would be: We
                            should allow *step-up authentication* to
                            occur solely between the *resource server
                            (RS)* and the *user agent* without
                            involving the *authorization server (AS)*.
                            But then who generates the new JWTs? If
                            the AS generates the new one then, we
                            didn't stop anything. And if the RS
                            generates the new one then actually the AS
                            isn't needed to do anything.

                        No that's not what I was suggesting.

                        It's not about excluding the authorization
                        server it's more about a additional
                        verification, that the user is granting the RS
                        explicit permission to use the AS on behalf.

                        AFAIK the actual situation is the following:

                        The site is providing the login via AS and the
                        AS can then on behalf any user of this site
                        just login. The site can of course implement
                        some permission granting but that's not
                        required. This is done via signed JWT, etc.
                        which are verified on the RS side.

                        Now my suggestion would be more like adding an
                        additional verification before the AS can be used:

                        *The following is just some rough idea on how
                        to add such verification in a safe way*

                        The RS side will use a signed jwt that will be
                        included into the access token send from AS to
                        verify that the user has granted permission to
                        use this AS.

                        This could be done automatically during
                        registration, so it wouldn't break this
                        feature in a way that the RS will create this
                        token during registration and send it to the
                        AS. The AS will need to include this token for
                        requests and if this cannot be verified on the
                        RS side it will not be accepted.

                        Further (ae. existing accounts) the user could
                        provide a signed jwt to the AS and a pub key
                        to the RS. If the jwt cannot be verified than
                        the user did not granted the permission to use
                        the AS on behalf.

                        For companies, etc. using RS / AS on premise
                        this could all be implemented to be done
                        automatically and it would not create any
                        additional effort on administration side.

                            And that latter case is actually the
                            reality if we consider these tokens to be
                            a 2FA mechanism that is managed by the
                            site/resource server. So I read this as,
                            we should standardize *WebAuthn
                            *communication between a *user agent* and
                            the *resource server. *That already exists
                            though, doesn't it?

                        Yes and no: Think about the widely used TOTP
                        (ae. github) the Secret Key is created on the
                        AS side and therefore under full control of
                        it. This is not helping to protect the user
                        from malicious intents.

                            On Thu, Aug 10, 2023 at 12:59 AM Matthias
                            Fulz <mf...@olznet.de> wrote:

                                I'm trying to explain my concern more
                                deeply, please try to follow my thinking.

                                First: Everything you've written is
                                correct and I fully agree.

                                But: The difference is: I'm deciding,
                                that I'm using email from xy, I'm
                                deciding, that I'm using this email to
                                register at some site or anything.

                                Anything of these services could be
                                hacked of course, and then they can
                                use my mail to reset password, use the
                                accounts, etc.

                                Now think from the other side:

                                Some site, which I'm registered in is
                                trusting some oauth provider I'm not
                                even knowing about. I'm not registered
                                at this provider. If this provider is
                                (independent how or from whom) is used
                                in a malicious way, they can access my
                                account, without my knowledge by
                                sending a valid token including my email.

                                I'm not sure how to explain the main
                                concern about this in more detail and
                                of course I can avoid services
                                providing these type of logins without
                                my permission, but as said what about
                                the future?

                                On 8/10/23 00:40, Warren Parad wrote:

                                    Let me try that differently, is
                                    OAuth more vulnerable than email
                                    usage? If you hacked any email
                                    provider that's arguably a bigger
                                    goldmine than just ones protected
                                    by oauth. As long as sites are
                                    protected by email, oauth gives a
                                    more secure strategy. Most
                                    providers that accept email as
                                    authentication allow you to reset
                                    your password via email.

                                    Going further, "email is insecure"
                                    because providers that send email
                                    can impersonate you. How about
                                    telecom companies, they can
                                    pretend to send SMS from you. Or
                                    the government, they could issue a
                                    new password in your name and
                                    pretend to be you. The horror.

                                    In all seriousness, it's about
                                    your threat modal more than
                                    anything. Concerned about your
                                    email, then that's your weak
                                    point, concern about oauth, we'll
                                    first be concerned about your
                                    email, and then you can be
                                    concerned about oauth.

                                    If we assume that everything was
                                    on oauth, then there's the
                                    question of why don't providers
                                    just implement a FIDO2 compliant
                                    strategy. Wouldn't that solve
                                    everything?

                                Don't get me wrong: I'm not telling
                                everything is on oauth as far (I'm not
                                so deep into the protocol) it's acting
                                only as authorization not as
                                authentication, than it is anyway the
                                wrong point to address this issue.

                                But if it would be possible to
                                eliminate this specific issue inside
                                the protocol directly, it would be the
                                best solution to not even run into
                                this situation at any later point of time.

                                As total naive approach I could about
                                something like:

                                Client is trusting Provider for user
                                authentication/authorization

                                Client must set some random
                                verification token (normally requested
                                / set by the user)

                                User is registering this token under
                                the provider

                                Only if this token is valid the token
                                is accepted by the client

                                If something like this would be
                                included in the protocol itself, it
                                would be working in all situations
                                like companies because they can
                                control both sides and generate such
                                tokens automatically

                                And yes if the site is working
                                together with the provider than it's
                                over, but that's exactly the point:
                                Than the target itself must be
                                included not only the single provider,
                                where the user might not even have an
                                relationship with.

                                Further I could think of extended
                                security, by using signed tokens with
                                user provided public key, so it's
                                technically secured to just fake tokens.

                                    On Thu, Aug 10, 2023 at 12:27 AM
                                    Matthias Fulz <mf...@olznet.de> wrote:

                                        Thank you for the responses so
                                        far.

                                        On 8/9/23 22:20, Warren Parad
                                        wrote:

                                            I can tell you I
                                            definitely read it. I
                                            actually read it multiple
                                            times. But I don't know
                                            what to tell you. The
                                            problem you've identified
                                            exists, but that doesn't
                                            necessarily mean it is a
                                            problem. In a way it is a
                                            bit like, You create a
                                            bank account at a bank and
                                            you give them all your
                                            money. They then decide to
                                            never give it back.

                                        Yep I know, but the difference
                                        is, that I've full control
                                        over my decision to give my
                                        money to this bank or not.

                                            While banks are regulated
                                            in most countries and
                                            things like GitHub are
                                            not, in essence this
                                            interaction is based on
                                            trust. Of course solutions
                                            like WebAuthn via FIDO2
                                            used as a first party
                                            authentication can solve
                                            this, and arguably this is
                                            the remit of the entire
                                            web3.0 domain.

                                            I don't think anyone would
                                            suggest this isn't a
                                            problem, just that it
                                            isn't that big of a
                                            problem. I think
                                            realistically, in order
                                            for this problem to have a
                                            closed form solution, it
                                            would need to start with a
                                            suggestion on how to solve
                                            it, rather than a bunch of
                                            us agreeing that it is.
                                            Because right now there
                                            doesn't seem to be any
                                            fundamental solution
                                            available for this. And
                                            honestly, the bigger
                                            problem is the digital
                                            assets at risk at the
                                            third parties is not due
                                            to impersonation, but just
                                            general negligence. GitHub
                                            isn't trying to malicious
                                            log into my StackOverflow
                                            account, and Google isn't
                                            trying to log into my
                                            bank. That's because these
                                            organizations have
                                            supposedly bound
                                            themselves to not grant
                                            this ability to their
                                            internal engineers to
                                            abuse. And they are
                                            spending tons of resources
                                            attempting to stop
                                            external attackers.

                                            That being said, it's hard
                                            to know if this problem
                                            hasn't already
                                            transgressed in the wild.
                                            While it is certainly
                                            possible, it seems
                                            internal users are more
                                            likely to act maliciously
                                            on behalf of the user via
                                            their owned data in their
                                            own company, rather
                                            than attempt to
                                            impersonate their users at
                                            third party sites.

                                        These points are totally
                                        correct, but I think also
                                        about something like official
                                        Authorities (ae. Patriot Act,
                                        etc.) that would definitely be
                                        interested in such things (ok
                                        not on me personally), but
                                        this is another topic.

                                        For me to be more safe, I'm
                                        using now a unique mail for
                                        Github, etc., which is
                                        sufficient for now, but if you
                                        think into the future and
                                        especially about oauth with
                                        more than a handful widely
                                        used trusted Providers and
                                        that they could be hacked,
                                        infiltrated forced to grant
                                        malicious access, etc. Than
                                        this could become to a huge
                                        problem in no time.

                                        As example: Think about one
                                        widely used trusted provider
                                        that's hacked, or similar. You
                                        could access so many accounts
                                        on multiple sites, even if the
                                        users are never used this
                                        oauth for these sites.

                                        Sorry to insist here, but just
                                        because it is not an issue
                                        now, I can't agree that this
                                        not a big deal in general.

                                        I mean in the above scenario
                                        even a unique mail wouldn't
                                        help because that could send
                                        any mail, they want to these
                                        sites. Think about such
                                        provider acting malicious and
                                        you would not even HAVE an
                                        account at any of them: every
                                        site, that trusts them could
                                        be accessed under your account
                                        just by knowing the user
                                        identifier, which is in 99%
                                        time the mail.

                                        - Matthias

                                            - Warren

                                            On Wed, Aug 9, 2023 at
                                            10:06 PM mfulz
                                            <mf...@olznet.de> wrote:

                                                Anyone read this topic
                                                or could tell if there
                                                is a better place to
                                                adress this?

                                                Sent from Nine
                                                <http://www.9folders.com/>

                                                
------------------------------------------------------------------------

                                                *Von:* mfulz
                                                *Gesendet:* Sonntag,
                                                16. Juli 2023 03:38
                                                *An:* oauth@ietf.org
                                                *Betreff:* [OAUTH-WG]
                                                OAuth Trust model

                                                Hi Together,

                                                I was thinking about
                                                some (at least I see
                                                it in that way)
                                                problem in the whole
                                                oauth/openid design:

                                                The problem is the
                                                following:

                                                The user has no
                                                control about what
                                                providers are accepted
                                                by the clients
                                                (websites, etc.) and
                                                this opens access to
                                                these providers
                                                without any way to
                                                protect against that.

                                                Example:

                                                I've created an
                                                account with
                                                email/password login
                                                at stackoverflow

                                                I've created an
                                                account with the same
                                                email at github

                                                -> logged out from
                                                stackoverflow

                                                -> logged in via
                                                github oauth ->
                                                working and connected
                                                to the email/pw
                                                account from stackoverflow

                                                Stackoverflow has the
                                                possibility to remove
                                                the github login now,
                                                but the main problem
                                                is, that I would be
                                                out of control, that
                                                some of these oauth
                                                providers

                                                (please don't go into
                                                the discussion WHY
                                                they or anyone should
                                                do it) could access my
                                                accounts, when such
                                                site would allow them
                                                as provider.

                                                In my opionion it
                                                would be good to avoid
                                                such issues, by
                                                including something in
                                                the standard, that the
                                                user MUST allow the
                                                connection on both
                                                sides on the client

                                                and on the provider.

                                                Yes for sso without
                                                any existing account
                                                that's some kind of an
                                                issue, but still it
                                                could be added some
                                                verification process
                                                like sending
                                                confirmation link

                                                That the user is
                                                accepting the oauth
                                                provider on the Client
                                                side.

                                                Then the oauth
                                                provider would also
                                                need access to my
                                                emails to access my
                                                account.

                                                Not sure if I'm wrong
                                                here but I think my
                                                description is correct.

                                                BR,

                                                Matthias

                                                
_______________________________________________
                                                OAuth mailing list
                                                OAuth@ietf.org
                                                
https://www.ietf.org/mailman/listinfo/oauth

                                        
_______________________________________________
                                        OAuth mailing list
                                        OAuth@ietf.org
                                        
https://www.ietf.org/mailman/listinfo/oauth

                                _______________________________________________
                                OAuth mailing list
                                OAuth@ietf.org
                                https://www.ietf.org/mailman/listinfo/oauth

                        _______________________________________________
                        OAuth mailing list
                        OAuth@ietf.org
                        https://www.ietf.org/mailman/listinfo/oauth

                _______________________________________________
                OAuth mailing list
                OAuth@ietf.org
                https://www.ietf.org/mailman/listinfo/oauth

        _______________________________________________
        OAuth mailing list
        OAuth@ietf.org
        https://www.ietf.org/mailman/listinfo/oauth

    _______________________________________________
    OAuth mailing list
    OAuth@ietf.org
    https://www.ietf.org/mailman/listinfo/oauth
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to