kratos
kratos copied to clipboard
WebAuthN with SPA: allow customized form submission
Preflight checklist
- [X] I could not find a solution in the existing issues, docs, nor discussions.
- [X] I agree to follow this project's Code of Conduct.
- [X] I have read and am following this repository's Contribution Guidelines.
- [X] This issue affects my Ory Cloud project.
- [X] I have joined the Ory Community Slack.
- [X] I am signed up to the Ory Security Patch Newsletter.
Describe your problem
Especially with flutter which is canvas/webassembly based, it is very hard/impossible to implement webauthn (ask @sashatalalasha).
One can as a workaround render a non-visible form that the /.well-known/webauthn.js
script can pick up and use for processing, but on form submit the browser navigates away from the SPA.
Describe your ideal solution
Instead of using form.submit()
, which does not emit a submit event but instead straight away submits the form, we could use form.requestSubmit()
.
The obvious question is: Why does this method exist, when we've had the submit() method since the dawn of time?
The answer is simple. submit() submits the form, but that's all it does. requestSubmit(), on the other hand, acts as if a submit button were clicked. The form's content is validated, and the form is submitted only if validation succeeds. Once the form has been submitted, the submit event is sent back to the form object.
The code in question is: https://github.com/ory/kratos/blob/a11841399956963bab319ce233a64ccb295d9b1d/selfservice/strategy/webauthn/js/webauthn.js#L87
Workarounds or alternatives
Allow customizing the behavior of the script by defining callbacks.
Version
latest
Additional Context
No response
If this would solve the issues you were having with implementing webauthn with flutter then I'm all for it. I too wanted to use webauthn as my primary login/sign-up method while utilizing flutter for the UI.
This solution seems easy to implement, do you guys have any thoughts on this?
Hello contributors!
I am marking this issue as stale as it has not received any engagement from the community or maintainers for a year. That does not imply that the issue has no merit! If you feel strongly about this issue
- open a PR referencing and resolving the issue;
- leave a comment on it and discuss ideas on how you could contribute towards resolving it;
- leave a comment and describe in detail why this issue is critical for your use case;
- open a new issue with updated details and a plan for resolving the issue.
Throughout its lifetime, Ory has received over 10.000 issues and PRs. To sustain that growth, we need to prioritize and focus on issues that are important to the community. A good indication of importance, and thus priority, is activity on a topic.
Unfortunately, burnout has become a topic of concern amongst open-source projects.
It can lead to severe personal and health issues as well as opening catastrophic attack vectors.
The motivation for this automation is to help prioritize issues in the backlog and not ignore, reject, or belittle anyone.
If this issue was marked as stale erroneously you can exempt it by adding the backlog
label, assigning someone, or setting a milestone for it.
Thank you for your understanding and to anyone who participated in the conversation! And as written above, please do participate in the conversation if this topic is important to you!
Thank you 🙏✌️