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

Reply via email to