[Openid-specs-ab] [External Sender] openid-connect-native-sso 04 - token type URI, applying the SSO to web apps
Tom Jones
thomasclinganjones at gmail.com
Tue Jan 17 20:38:01 UTC 2023
I demonstrated a way to be sure that a native app and web app were on the
same machine using localhost over 2 years ago. YouTube link below. What I
have not been able to do is create an e-e secure link between them on the
same device. That would not be too hard for browser guys to do; but they
have no incentive.
https://www.youtube.com/watch?v=Tq4hw7X5SW0
..tom
On Tue, Jan 17, 2023 at 8:19 AM George Fletcher via Openid-specs-ab <
openid-specs-ab at lists.openid.net> wrote:
> Hi Vladimir,
>
> This is great news regarding the implementation.
>
> Regarding the URN... I styled them after the URNs in the OAuth Token
> Exchange spec and yes, not registering an official one or using the ietf
> OAuth params in an oversight. It should be
> `urn:ietf:params:oauth:token-type:device_secret` and I will need to work
> with Mike on how that should get changed and what it might mean to existing
> implementations.
>
> I agree that authentication from a mobile app to web app is a common
> transition and another space for which there is little specification. I
> wrote a draft for this back in 2013 I believe:) The biggest issue is that
> if not using a WebView, there is no way to ensure the web request is coming
> from the same device where the mobile app is running. All parameters must
> be present on the URL and so it's possible for an attacker to start the
> flow on one device and the URL with all required parameters to another
> device for completion.
>
> That said, I'm definitely open to options for how we might specify a safe
> way to perform this step seamlessly. I'm attaching the old draft (v2 though
> I believe I did an v3 version but don't seem to have access to it anymore).
>
> Thanks,
> George
>
>
>
> On Tue, Jan 17, 2023 at 5:32 AM Vladimir Dzhuvinov <
> vladimir at connect2id.com> wrote:
>
>> Hi George,
>>
>> After voting for the implementer's draft of the native SSO we now
>> consider adding it in the open source Nimbus OIDC Java SDK we maintain.
>>
>> We noticed the actor_token_type uses an x-oath URN instead of the common
>> format of other registered token type URIs. I'm not sure if that was a
>> missed artifact from an early spec or implementation, or is intentional:
>>
>> "urn:x-oath:params:oauth:token-type:device-secret"
>>
>> https://openid.net/specs/openid-connect-native-sso-1_0-04.html#section-4.1
>>
>>
>> https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#uri
>>
>>
>> Some people who read the draft have faced the problem of integrating
>> mobile and web SSO into one seamless UX. Say a user who is logged into a
>> mobile app performs an action that opens a web page belonging to the app
>> vendor. This will typically trigger a new OpenID auth request, and that is
>> perceived as super bad and illogical UX. Handover between mobile and web
>> app appears to be fairly common. Often it doesn't require the user to be
>> authenticated at the target web page, but occasionally it does.
>>
>> So, the idea why not adapt the native SSO flow, roughly as it is, to
>> handle signing into a web app.
>>
>> Here is one flow that is currently being considered:
>>
>> - It requires the native client to know the client_id of the web app.
>>
>> - It requires the web app to be a confidential client.
>>
>> - The native client makes a token exchange request, stating the
>> client_id of the target web app in the "audience" parameter (this is not
>> semantically correct, because the web app is not the ultimate consumer of
>> the issued token) and the "requested_token_type" to indicate a new
>> "handover" token. The native clients sends the ID token and device secret
>> used in the native SSO token exchange.
>>
>> - The returned handover token will be encrypted by the OP to self (or
>> will be a random string key pointing a DB record at the OP), and carry the
>> end-user ID, her auth context (if any), and the client_id of the target web
>> app.
>>
>> - The native app will open a web app link in the system browser,
>> passing the handover token.
>>
>> - The web app will make a new _authenticated_ token exchange request,
>> using the handover token to obtain an ID token and potentially access and
>> refresh token. The OP will not release the requested tokens to the web app
>> unless the client_id in the validated handover token matches the
>> authenticated client (the web app).
>>
>> Another variant, if the web app doesn't support token exchange, is to
>> pass the handover token in a login_hint of a standard prompt=none OpenID
>> authentication request, and continue from there as normal. The handover
>> token client_id will be checked when the client authenticates at the token
>> endpoint. This variant could also work for web apps that are public clients
>> (SPAs).
>>
>>
>> We are quite keen to support a flow that builds upon the proposed native
>> SSO to link associated web apps. I wonder if you already considered
>> something like this. And your general thoughts on using the native SSO flow
>> to also cover web apps vs alternatives.
>>
>>
>> Vladimir
>>
>> --
>> Vladimir Dzhuvinov
>>
>> ------------------------------
>
> The information contained in this e-mail is confidential and/or
> proprietary to Capital One and/or its affiliates and may only be used
> solely in performance of work or services for Capital One. The information
> transmitted herewith is intended only for use by the individual or entity
> to which it is addressed. If the reader of this message is not the intended
> recipient, you are hereby notified that any review, retransmission,
> dissemination, distribution, copying or other use of, or taking of any
> action in reliance upon this information is strictly prohibited. If you
> have received this communication in error, please contact the sender and
> delete the material from your computer.
>
>
>
>
> _______________________________________________
> Openid-specs-ab mailing list
> Openid-specs-ab at lists.openid.net
> https://lists.openid.net/mailman/listinfo/openid-specs-ab
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openid.net/pipermail/openid-specs-ab/attachments/20230117/5fe5638a/attachment-0001.html>
More information about the Openid-specs-ab
mailing list