kratos icon indicating copy to clipboard operation
kratos copied to clipboard

WebAuthN with SPA: allow customized form submission

Open zepatrik opened this issue 2 years ago • 1 comments

Preflight checklist

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

zepatrik avatar Jul 06 '22 14:07 zepatrik

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?

alantbarlow avatar Jul 26 '22 12:07 alantbarlow

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 🙏✌️

github-actions[bot] avatar Jul 27 '23 00:07 github-actions[bot]