[Openid-specs-ab] Some comments
Torsten Lodderstedt
torsten at lodderstedt.net
Sun Nov 6 18:20:35 UTC 2011
Hi all,
please find below some questions, thoughts and comments regarding the
current Connect specs:
<http://openid.net/specs/openid-connect-messages-1_0.html>
http://openid.net/specs/openid-connect-messages-1_0.html
scope/response type: what is the expected usage of response type
"id_token" and scope "openid"? Is it possible to just request an access
token for the user info endpoint w/o getting an id_token? Im asking
because the spec states: "Theopenidvalue also requests that the ID Token
associated with the authentication session be returned." Does this mean
the id_token is always returned if the client requests the openid scope?
User attributes: As far as I understand the spec, the scope value
"openid" always requests access to user attributes via User Info. The
set of attributes is determined by OP and/or user. The scope values
"profile", "address", and "email" just further qualify the user
attributes requested by the client. Is this correct? Does profile really
only refer to the profile URL? This would also mean a client interested
in obtaining the user's name or nickname would need to use the JSON
request object. Is this the idea?
What is the minimal set of user attributes allowed on the user info
endpoint? I could imagine some OPs only disclose user identifier.
Did you consider to enclose the OpenId Connect scopes into a namespace?
The current naming may cause name clashes.
nonce: what kind of replay attacks shall this parameter prevent?
display: In my opinion, display="none" would better fit into the list of
values of the prompt parameter.
We already discussed the inclusion of OAuth request parameters in the
JSON request object. I would suggest to only include Connect parameters
in this object as long as there is no OAuth JSON Request binding.
§3.2.1 Access Token Request
client_secret: Why is this parameter made REQUIRED? The OAuth spec
allows for unauthenticated requests.
code/refresh token: Why are both parameters REQUIRED? I assume those are
alternative because the belong to different gran types.
§3.2.2.
"After receiving and verifying a valid and authorized Access Token
Request from the client, the Authorization Server returns a Positive
Assertion that includes an Access Token and an ID Token."
I assume the id_token is only returned in case the client request it
explicitely using response type "id_token"?
§3.3.2
"If the requested schema is "openid", the response MUST return a JSON
object that contains the full set or subset of claims that are defined
below."
I assume the set of claims is determined by the scope(s) associated with
the access token?
http://openid.net/specs/openid-connect-standard-1_0.html
What is the reason for having this and the messages document since all
bindings are explained in one document? In the current structure, there
seems to be some redundancy between the documents.
What is the purpose of the response type "code token"?
§4.3.1.3.3. Authorization Server Fetches the Request File
"Upon receipt of the Request, the Authorization Server MUST send a GET
request to therequest_urito retrieve the content unless it is already
cached and parse it to recreate the authorization request parameters.
Note that the RP SHOULD use a unique URI for each request, or otherwise
prevent the Authorization server from caching therequest_uri."
I'm a bit confused. Is caching of the request object desirable or must
be prevented? I think it must be prevented because otherwise the client
cannot send different state parameter values, which are required for
XSRF prevention.
§5.2. Refreshing an Access Token
"Authorization servers MUST support both forms of client authentication
at the Token Endpoint."
What is meant by this statement? BASIC and body parameters or client
secret and JWT?
$5.2.1. Positive Assertion
When is the authorization server expected to return an id_token? I
assume if the original authorization request's response type parameter
contained "id_token"? Is this refreshed id_token expected to have a
connection to a SSO session? Could make things complicated.
7. Check ID Endpoint
I don't understand why the id_token format must be defined if the client
is supposed to use another endpoint to obtain the data contained. In my
opinionn, either the id_token is an assertion and can directly be
interpreted by the client or it is an access token (as other OAuth
access tokens) and can be used to obtain user session data from a
session endpoint. Why not making this two different OpenId connect modes?
Same holds for the session management. If the id_token is used to
prolong or terminate sessions, the client does not need to interpret its
containt.
Thoughts?
http://openid.net/specs/openid-connect-session-1_0.html
3.1.4. Implicit (User-Agent) Flow
"The user-agent and client servlet can then use the session management
endpoints by presenting the ID token to the endpoints."
What is the client servlet and which role does it play? There seem to be
underlying ideas about how clients should use Connect and their
architecture. Could you please describe them?
http://openid.net/specs/openid-connect-basic-1_0.html
"The OpenID Connect Basic Client profile only documents clients using
the implicit flow."
Does this mean Connect Basic is suited for JavaScript clients only? I'm
asking because standard web application cannot access the URL fragment
used to pass the tokens back to the user agent.
How are such clients supposed to access the user info and check id
endpoints given the same-origin policy? Or does Connect rely on CORS?
regards,
Torsten.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openid.net/pipermail/openid-specs-ab/attachments/20111106/ea331dbc/attachment.html>
More information about the Openid-specs-ab
mailing list