[Openid-specs-ab] Feedback to implementators draft
Justin Richer
jricher at mitre.org
Mon Apr 2 13:39:40 UTC 2012
+1 to making the Basic client use the authz code flow and moving
implicit off somewhere else. I again contend that it makes sense for
Facebook, who want to host the callback URL for you, but not for other
people.
-1 to dropping signature check requirement -- this fits a "trust but
verify" pattern and allows for a pretty simple way to implement security
in depth, especially when coupled with the checkid endpoint.
Ambivalent on nonce -- it's simple enough to implement in a client,
though the "state" parameter almost takes care of it for you.
-1 to dropping the checkid endpoint -- unless it's in favor of a more
generic "check the token with the AS" endpoint, which is what's starting
to be talked about over in the OAuth WG.
-1 to dropping symmetric signatures. They're defined under JWS, which is
pulled in by reference, so I'm not sure I see the value in cutting out
the capability from Connect.
-- Justin
On 03/31/2012 04:43 PM, Torsten Lodderstedt wrote:
> Hi all,
>
> I want to give you some feedback regarding the implementators draft
> based on ongoing discussions at Deutsche Telekom and other operators.
> We are currently considering to use OpenID Connect for two purposes:
>
> 1) There is an initiative to expose our login capabilities (e.g. based
> on SIM cards) to application developers via an standardized interface.
> For the first phase, we decided to go with OpenID 2.0. For the next
> phase, we are considering to migrate to OpenID connect because of its
> superiour capabilities regarding mobile apps and its alignment with
> OAuth 2.0 (which already is the authorization protocol of choice for
> other Telco APIs).
>
> 2) We use OpenID 2.0 with some extensions for session management and
> token handling internally at Deutsche Telekom for our consumer
> products. Clearly, OpenID connect would be the next logical step in
> order to get rid of the propietary stuff and come up with a better
> OAuth integration.
>
> For both use cases, we think simplicity is, beside security, a
> critical success factor. There are a couple of aspects that currently
> prevent us from adopting OpenID connect and I want to share those with
> you along with some suggestions how to cope with them.
>
> 1) Client Basic Profile
> In my opinion, the basic client profile should support the
> straight-forward implementation of any kind of application. I
> currently see issues regarding web and mobile apps and would therefore
> propose the following changes:
>
> 1.1) Use grant type code instead of implicit grant
> I would suggest to change the Basic Client Profile to use
> authorization codes instead of the implicit grant. In my opinion, code
> has the following advantages:
> - It is simpler to implement for web applications.
> - It is better suited for mobile apps because of the support for
> refresh tokens.
> - The ability to transmit large user data chunks over a back channel
> instead of the front channel is beneficially for mobile web
> applications, which most likely run on high latency, low bandwitdh
> network connections.
> - It is more secure due to the transmission of longer-lasting
> secrets via back channels only.
>
> 1.2) Drop the need for signature validation in basic profile
> Because of the direct TLS-protected connection between RP and AS on
> the tokens endpoint, the RP no longer needs to validate the digital
> signature of an id token. This is because the authenticity of the
> issuer is already ensured by TLS server authentication. This would
> further simplify RP implementations and follow the OAuth 2.0 spirit to
> avoid signatures if possible. Clearly, signature validation is still
> needed for all indirect tranmissions of id tokens.
>
> 1.3) Drop nonce from basic profile
> I would suggest to remove nonces from the basic profile and instead
> use TLS and a single-use restriction on authorization codes to prevent
> token replay. This is inline with the defintions given in the security
> consideration section of the OAuth core spec and further simplifies
> implementations.
>
> In §10.12, it is stated that any client must prevent XSRF:
>
> "The client MUST implement CSRF protection for its redirection URI."
> "The client SHOULD utilize the "state" request parameter ..."
>
> §10.5 requires:
> "Authorization codes MUST be short lived and single use."
>
> and also states TLS MUST be used to protect the redirect endpoints of
> clients, which use OAuth for login functions, which clearly holds for
> OpenId Connect RPs.
>
> "Therefore, if the client relies on the authorization code for its own
> resource owner authentication, the client redirection endpoint MUST
> require TLS."
>
> 2) General proposals
> Regarding the overall specification, I would like to suggest the
> following changes:
>
> 2.1) removal of checkid endpoint
> As stated above, Id tokens don't need to be verified for direct
> connections. Even if the RP (or any other party) needs to validate it,
> the verification of id tokens is simple given the adoption and
> simplicity of JWT. So I don't see a need for this function.
>
> 2.2) removal of symmetric signatures for id tokens
> I think the spec could benefit from removing support for symmetric
> signatures and support asymmetric signatures, only. RPs (even public
> clients) could validate signatures based on the AS's public key.
> Interop would benefit because of the reduced numbers of algorithms,
> security would benefit because of the limited applicability of
> symmetric signatures (two parties only!). Moreover, dual use of client
> secrets for authentication on the AS (original use case) and
> creation/validation of digital signatures would put to an end.
>
> What do you think?
>
> best regards,
> Torsten.
> _______________________________________________
> Openid-specs-ab mailing list
> Openid-specs-ab at lists.openid.net
> http://lists.openid.net/mailman/listinfo/openid-specs-ab
More information about the Openid-specs-ab
mailing list