-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
login_hint statement for auth code flow #242
Conversation
I think login_hint is an important parameter to support. For example if the API consumer wants to trigger consent collection for any API and purpose, they would provide login_hint as a hint which API provider user identifier the end-user provided. If the subscriber has multiple contracts, then the end-user can provide the MSISDN this consent collection is about. Consent collection inherently requires a end-user interaction. I cite GDPR but his applies globally, I think. This has nothing to do with interoperability. How the API provider authenticates the end-user is for the API provider to decide. That implies that the account identifier used for end-user authentication is for the API provider to decide. The API consumer can use login_hint to provide a hint which account identifier should be used. |
@AxelNennker I'm not aware of any standardised registry of |
From the minutes:
The "historically" statement in the minutes plain wrong to be begin with. Historically
This PR does not implement the WG consensus. We have consensus that the authorization server can choose any user authentication method when consent needs to be collected. The parameter login_hint provides a hint for which user account to use. This PR prevents this. |
ICM guidelines do not need to say anything about the OIDC login_hint parameter itself. It is standardized in OIDC. The parameter E.g. when end-user consent is collected using "prompt=consent" then the user needs to be authenticated and login_hint could provide the identifier of the user account. Or if Regarding "registry", there is no need for a registry. What the CAMARA Security and Interoperability Profile specifies is the format of some values.
The CAMARA Security and Interoperability Profile specifies that IF the value is phone number then the format is as defined. |
The purpose of the PR is to try and prevent authorisation servers throwing an error when the contents of |
Co-authored-by: Eric Murray <eric.murray@vodafone.com>
The OIDC standard says that the login_hint is optional. An example: Let the value of login_hint be "foobar". IF the AZ decides that the end-user must be authenticated then the AZ redirects to a login page with e.g. username and password field. The username field is then pre-filled with the value "foobar". The end-user is usually allowed to change the username input field. That end-user can enter their API provider username und password and be authenticated. There is never an error thrown for any "hint". The "hints" are there for better user experience and not to stop the user flow. For OIDC authorization code flow the above is even true, if the pattern for phone number for a login_hint with prefix tel: does not match. The ever helpful AZ which receives e.g. login_hint=tel:FooBar can ignore the login_hint completely. The AZ knows what valid identifiers for user accounts are. If the AZ usually does Passkey authentication and the login_hint matches some Cookie value that the AZ uses for that login-method then the AZ could suggest the Passkey with that "label" if Cookies indicate that the user last time used a Passkey. That is mend by OIDC the use of login_hint is at the OpenId Providers discretion. No sane implementation of OIDC authorization code flow would throw an error for a "hint". OIDC authorization code flow is very different from CIBA, because in CIBA the login_hint determines to which phone number the authentication message is send. Without a valid login_hint CIBA fails. Note: the CAMARA Security and Interoperability Profile does not prevent a login_hint with a value of "foobar". That section says: For phone numbers use tel:, for IP addresses use ipport: That section does not say anything for any other user identifiers. |
Maybe because the authorisation server has no idea who "foobar" is, and hence cannot authenticate "foobar". As you are well aware, not all authorisation servers are being bought "off the shelf". But if your view is that the authorisation will anyway never throw an error even for unrecognised login hints, what is the problem with the PR, as it is just recommending this exact behaviour? You haven't explained why you think this PR "prevents" an authorisation server from requiring a
The point of this PR is to deal with the situation where the API provider that the application has been dealing with requires, for example, But you still haven't explained how this would all work in an aggregated or federated scenario. If API provider 1 requires "foobar" and API provider 2 requires "raboof@example.com", how does the application learn which one of those identifiers it is meant to use when the only authorisation server it knows about is that of the aggregator?
Indeed, which means it is unlikely that all authorisation servers will have common requirements for these "other user identifiers" in an aggregated or federated scenario. If an application is only dealing directly with a single CSP, then they can agree the requirements between them. But that is not really the point of CAMARA. CAMARA has not made any statement along the lines that "where |
OIDC authorization code flow is a redirect-base flow. As I said, login_hint in only used to fill-in the user's account identifier into the login form when the end-user is authenticated. The CAMARA authorization server does not need to know about the login_hint value, except those CAMARA-defined prefixes. This PR does not reflect the WGs consensus as written in the minutes.
The WG consensus is what OIDC standardized already, so this PR is not needed and can be closed.
The PR goes beyond the WG consensus by RECOMMENDING that the logiin_hint SHOULD be ignored. Why should the API provider ignore help? |
No, it does not, Please read it again. It recommends that the The bit I don't understand about your view is - how should an API provider treat a
|
The word "can" means that the "SHOULD" from the PR should be a "MAY" instead.
I guess I can live with the last sentence, but I think that "recognise" is not well defined.
So, the complete paragraph would be:
I can live with that, BUT end-user authentication is never a topic for "interoperability" because one operator can use end-user authentication with username and password, where the username is an email address. Other operators require 2FA. Regarding "returning an error", all "hints" in OIDC authorization code flow are there to improve the user experience. There is never an error if a received hint is not supported. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
@AxelNennker @sebdewet Please re-review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
What type of PR is this?
What this PR does / why we need it:
This PR adds WG requested statement about login_hint for auth code flow in CAMARA profile document as closure for issue #191.
Which issue(s) this PR fixes:
Fixes #191
Special notes for reviewers:
CC @Elisabeth-Ericsson @eric-murray @HuubAppelboom @shilpa-padgaonkar
Changelog input
Additional documentation
https://lf-camaraproject.atlassian.net/wiki/spaces/CAM/pages/56754234/2024-12-18+ICM+Minutes