-
Notifications
You must be signed in to change notification settings - Fork 3
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
Add a capability indicating mandatory authentication #73
Add a capability indicating mandatory authentication #73
Comments
The issue with using capability nogotiation is that most clients do not wait for the server to send anything before sending their CAP, optional AUTH[ENTICATE]/PASS, NICK, and USER messages, so without a larger change on the client side, I don't know that you can really "inform" the client of much prior to its attempt to register (with or without authentication). The way almost every other protocol (HTTP, SMB, SIP, ...) accomplishes this is to simply respond to an attempt to connect anonymously with an "authorization failed"-type response (think HTTP 401). The client attempts to connect anonymously, gets that error, and then goes through the supported authentication mechanisms until successful. In the IRC world the only standard numeric reply I've ever seen for this is the ERR_NOACCESS (913) from IRCX (which arguably wasn't even needed in IRCX because IRCX clients are supposed to test for IRCX capabilities (and thus their auth requirements) before registering); but IRCv3 already reallocates most of IRCX's SASL-related numerics to lower numbers. Perhaps respond with ERR_SASLFAIL even though the user didn't AUTEHNTICATE, as if the user failed an implicit "anonymous" authentication attempt. |
wh... what? clients that blindly |
For example, mIRC sends I've never used a client that waits for the response to |
you don't need to tell it to wait for a response to |
Ok that makes sense -- I didn't realize it held waiting for |
Ergo sends I think this might be a better approach than an informational CAP, because whether SASL is required may depend on contingent aspects of the user's specific connection (what IP they're coming from, the result of a DNSBL lookup, etc.) and it's preferable not to have to vary the CAP response (or delay it, in the case of an external lookup) based on this. I'm not sure about the stated rationale of prompting the user up front for a password, because in terms of clients that currently exist, I don't know how we could get the following combination of circumstances:
The flow where the client attempts to connect, receives |
For gamja, I had in mind to connect to the IRC server on page load just to grab the available caps, then disconnect immediately. Once the cap list is known, the client can decide:
Having the failure codes isn't as nice because it doesn't allow clients to show/hide login screen UI elements depending on server caps.
|
In order for gamja to know which server to connect to, it must be preconfigured with a |
gamja will default connecting to What I described isn't specific to gamja, it may be useful to other IRC clients as well, e.g. a future Android client. |
In the first case, whoever controls But more generally, it seems that the flow goes like this:
but this seems only a marginal improvement on taking the nickname information up front, attempting connection registration, and then falling back to a UI that requires account information on observing |
Displaying a password entry and marking it as optional is misleading to users when the server requires auth or doesn't support auth. |
To be clear, I don't think |
I tentatively withdraw my objections to this proposal and suggest the use of an additional CAP value field in |
Add `account-required` cap value to `draft/account-registration` as per discussion here: ircv3/ircv3-ideas#73
Alternative to ircv3#490. Closes: ircv3/ircv3-ideas#73
Alternative to ircv3#490. Closes: ircv3/ircv3-ideas#73
On some setups, user authentication is mandatory. It would be nice if servers could communicate this to clients, e.g. via a
sasl-required
capability.The use-case is properly asking the user for credentials if necessary (e.g. no "optional" indication in the password field).
The text was updated successfully, but these errors were encountered: