[OpenID] Does Application Type correspond to Client Type?

John Bradley ve7jtb at ve7jtb.com
Sun May 11 17:59:25 UTC 2014


This list is for general information about openID.

The correct place to discuss deployment and interop issues and questions is OpenID Connect Interop
That group/list has no IPR restrictions.

For discussing errata or other issues with the Connect specifications the list is http://lists.openid.net/mailman/listinfo/openid-specs-ab.
You must sign a non assert IPR agreement to contribute to the specification, as all the other WG participants have.

The Connect WG page lists the links and other useful information http://openid.net/connect/

The version of Dynamic Client registration being developed by the OAuth WG in the IETF based on the Connect specification can be discussed at:
https://www.ietf.org/mailman/listinfo/oauth

To your question Registration's application type is not the same as RFC 6749 Sec 2.1 Client Types.

It is dynamic registration itself that allows a native app to be confidential so that section of RFC 6749 may be changed after the IETF approves dynamic client registration.

That section also states

A client may be implemented as a distributed set of components, each
   with a different client type and security context (e.g., a
   distributed client with both a confidential server-based component
   and a public browser-based component).

Connect supports this with the hybrid response types.

A Web application with a single client_id  may contain both a public component and a confidential component.  

The element response_type determines the flows the client can preform.

The default for that is the client can only preform the code flow and must use a client credential to authenticate itself to the token endpoint.

The response types are a finer grained and imply public and private for the hybrid components.

What is not possible without extending dynamic client registration are public clients that use a code grant_type.
One of the main reasons for dynamic client registration is to eliminate the need for an AS to support public clients using the code grant_type.

In any event we can continue this on one of the other lists.

John B.

On May 11, 2014, at 6:56 PM, Takahiko Kawasaki <daru.tk at gmail.com> wrote:

> Thank you for your comment.
> 
> If both native clients and web clients can be public or confidential,
> application_type which is described in Client Metadata section of
> OpenID Connect Dynamic Client Registration 1.0 is DIFFERENT from the
> client type described in RFC 6749.
> 
> Considering the following two points:
> 
>   (1) RFC 6749 (OAuth 2.0) requires a client type to be registered.
>       (RFC 6749, 2. Client Registration)
> 
>   (2) OpenID Connect Relying Party is a kind of OAuth 2.0 client app.
>       (OpenID Connect Core 1.0, 1.2. Terminology)
> 
> there should be a client metadata entry to specify a client type (e.g.
> client_type), and it should be treated separately from application_type.
> 
> Information about Client Type (not Application Type) is really needed
> to implement OAuth 2.0 authorization server correctly. Especially it
> is needed to determine (1) whether client authentication is required
> at the token endpoint (3.2.1. Client Authentication) and (2) whether
> registration of redirect URIs can be omitted (3.1.2.2. Registration
> Requirements).
> 
> Without a client metadata entry to specify a client type, the default
> value of client type cannot help but be left to implementations of
> OpenID Connect Dynamic Client Registration 1.0.
> 
> IMHO, if such an entry (e.g. client_type) should be added, 'public'
> would be appropriate as the default value because 'client_secret' in
> Client Registration Response is OPTIONAL.
> 
> --
> Best Regards,
> Takahiko Kawasaki
> 
> 
> 
> 
> 2014-05-11 5:54 GMT+09:00 John Bradley <ve7jtb at ve7jtb.com>:
> Native clients may also be confidential if they register a unique client_id and have a secret that is provisioned in registration or out of band in some way.
> 
> Web includes both confidential and public types of clients.
> 
> Client type web or native came from a number of IdP like Google who do not allow the same client_id to be used across different types of clients.
> 
> The type of client restricts the type of redirect_uri that is allowed to be registered.
> 
> All clients must register full redirect URI and the Authorization server must match the registered redirect_uri with the one in the request.
> 
> The recent covert redirect furor and the consequences of Facebook not requiring it should go some way to explaining why registering redirect_uri is important.
> 
> One reason for not allowing native_apps and back end Web servers to share a client_id is privacy.   A user granting a app on there phone access to a API is not the same as
> granting a Web site access, and a user discovering that consenting to one automatically consented to the other may not be taken well.
> 
> The reason for separating the two types of clients is both good security and good privacy policy.
> 
> John B.
> 
> 
> On May 10, 2014, at 12:02 PM, Takahiko Kawasaki <daru.tk at gmail.com> wrote:
> 
> > If "Native Clients" in "OpenID Connect Dynamic Client Registration
> > 1.0, 2. Client Metadata" means "native application" in "RFC 6749
> > (OAuth 2.0), 2.1 Client Types" (yes it apparently does), "Native
> > Clients" are always 'public' clients.
> >
> > If "Web Clients" in "OpenID Connect Dynamic Client Registration 1.0,
> > 2. Client Metadata" means "web application" in "RFC 6749 (OAuth 2.0),
> > 2.1 Client Types" but does not include "user-agent-based application",
> > "Web Clients" are always 'confidential' clients.
> >
> > Using the above interpretation, application_type=native and
> > application_type=web correspond to 'public' and 'confidential',
> > respectively.
> >
> > However, the requirement of application_type:
> >
> >    Web Clients using the OAuth Implicit Grant Type MUST only
> >    register URLs using the https scheme as redirect_uris; they
> >    MUST NOT use localhost as the hostname. Native Clients MUST
> >    only register redirect_uris using custom URI schemes or URLs
> >    using the http: scheme with localhost as the hostname.
> >
> > is irrelevant to whether or not clients are "capable of maintaining
> > the confidentiality of their credentials" (from RFC 6749). In other
> > words, redirect URIs are irrelevant to how to authentication clients.
> > Therefore, it sounds to me that Application Type and Client Type are
> > different concepts.
> >
> > It is weird that all "OAuth 2.0 clients" must comply with either of
> > the 'redirect_uris' requirements (one is for Web Clients and the
> > other is for Native Clients), so probably it is inappropriate that
> > 'web' is used as the default value when application_type is omitted.
> > IMHO, neither of 'native' nor 'web' should be assumed when
> > application_type is omitted. But, I may be missing something. Is
> > there any reason to impose the 'redirect_uris' requirements on all
> > "OpenID Connect clients"?
> >
> > Anyway, my conclusion is that Application Type and Client Type are
> > different. And I hope that client_type (public or confidential) is
> > added to the list of Client Metadata and that neither of 'native'
> > nor 'web' is used as the default value when application_type is not
> > contained in client registration requests.
> >
> > --
> > Best Regards,
> > Takahiko Kawasaki
> >
> >
> > 2014-05-10 10:29 GMT+09:00 Takahiko Kawasaki <daru.tk at gmail.com>:
> >> Hello,
> >>
> >> I'm wondering whether this is the right place to ask my question.
> >> If not, please tell me so.
> >>
> >> I posted a question to StackOverflow, but no answer yet.
> >>
> >>  http://stackoverflow.com/q/23557801/1174054
> >>
> >> My question is "Does Application Type (OpenID Connect) correspond to
> >> Client Type (OAuth 2.0)?" Could anyone give me an answer please?
> >> Below is the detail of the question.
> >>
> >> "OpenID Connect Dynamic Client Registration 1.0, 2. Client Metadata"
> >> has an entry named application_type, whose defined values are
> >> 'native' and 'web'.
> >>
> >>  --- Excerpt from OpenID Connect Dynamic Client Registration ------
> >>  application_type
> >>    OPTIONAL. Kind of the application. The default, if omitted, is
> >>    web. The defined values are native or web. Web Clients using the
> >>    OAuth Implicit Grant Type MUST only register URLs using the
> >>    https scheme as redirect_uris; they MUST NOT use localhost as
> >>    the hostname. Native Clients MUST only register redirect_uris
> >>    using custom URI schemes or URLs using the http: scheme with
> >>    localhost as the hostname. Authorization Servers MAY place
> >>    additional constraints on Native Clients. Authorization Servers
> >>    MAY reject Redirection URI values using the http scheme, other
> >>    than the localhost case for Native Clients. The Authorization
> >>    Server MUST verify that all the registered redirect_uris conform
> >>    to these constraints. This prevents sharing a Client ID across
> >>    different types of Clients.
> >>  ------------------------------------------------------------------
> >>
> >> Do these defined values correspond to 'public' and 'confidential'
> >> described in "RFC 6749 (OAuth 2.0), 2.1. Client Types"?
> >>
> >>  --- Excerpt from RFC 6749 (OAuth 2.0) ----------------------------
> >>  OAuth defines two client types, based on their ability to
> >>  authenticate securely with the authorization server (i.e., ability
> >>  to maintain the confidentiality of their client credentials):
> >>
> >>    confidential
> >>      Clients capable of maintaining the confidentiality of their
> >>      credentials (e.g., client implemented on a secure server with
> >>      restricted access to the client credentials), or capable of
> >>      secure client authentication using other means.
> >>
> >>    public
> >>      Clients incapable of maintaining the confidentiality of their
> >>      credentials (e.g., clients executing on the device used by the
> >>      resource owner, such as an installed native application or a
> >>      web browser-based application), and incapable of secure client
> >>      authentication via any other means.
> >>  ------------------------------------------------------------------
> >>
> >> If not, why doesn't the specification (OpenID Connect Dynamic Client
> >> Registration 1.0) have an entry to specify a client type? Is there
> >> any way to specify a client type (public or confidential) at the
> >> client registration endpoint?
> >>
> >>
> >> --
> >> Best Regards,
> >> Takahiko Kawasaki
> > _______________________________________________
> > general mailing list
> > general at lists.openid.net
> > http://lists.openid.net/mailman/listinfo/openid-general
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openid.net/pipermail/openid-general/attachments/20140511/56da75cf/attachment.html>


More information about the general mailing list