-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Passkeys: Supporting WebAuthn Conditional UI #24305
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
Passkeys: Supporting WebAuthn Conditional UI #24305
Conversation
e4112f9 to
8b5a84b
Compare
|
@thomasdarimont What do you think? |
|
@mposolda Yes, I will add a documentation. |
8b5a84b to
3a2062c
Compare
3a2062c to
f03157c
Compare
be1e778 to
1185596
Compare
Unreported flaky test detectedIf the below flaky tests below are affected by the changes, please review and update the changes accordingly. Otherwise, a maintainer should report the flaky tests prior to merging the PR. org.keycloak.testsuite.x509.X509BrowserCRLTest#loginSuccessWithCRLSignedWithIntermediateCA3FromTruststoreKeycloak CI - FIPS IT (strict) org.keycloak.testsuite.x509.X509BrowserCRLTest#loginFailedWithIntermediateRevocationListFromFileKeycloak CI - FIPS IT (strict) org.keycloak.testsuite.x509.X509BrowserCRLTest#loginFailedWithIntermediateRevocationListFromHttpKeycloak CI - FIPS IT (strict) org.keycloak.testsuite.x509.X509BrowserCRLTest#loginFailedWithInvalidSignatureCRLKeycloak CI - FIPS IT (strict) org.keycloak.testsuite.x509.X509BrowserCRLTest#loginWithMultipleRevocationListsKeycloak CI - FIPS IT (strict) org.keycloak.testsuite.x509.X509BrowserCRLTest#loginSuccessWithEmptyRevocationListFromFileKeycloak CI - FIPS IT (strict) org.keycloak.testsuite.x509.X509BrowserCRLTest#loginSuccessWithEmptyRevocationListFromHttpKeycloak CI - FIPS IT (strict) org.keycloak.testsuite.x509.X509BrowserCRLTest#loginFailedWithRevocationListFromDistributionPointsKeycloak CI - FIPS IT (strict) org.keycloak.testsuite.x509.X509BrowserCRLTest#loginWithMultipleRevocationListsUsingInvalidCertKeycloak CI - FIPS IT (strict) |
ghost
left a comment
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.
Unreported flaky test detected, please review
646a6ca to
b5f797c
Compare
Unreported flaky test detectedIf the below flaky tests below are affected by the changes, please review and update the changes accordingly. Otherwise, a maintainer should report the flaky tests prior to merging the PR. org.keycloak.testsuite.admin.IdentityProviderTest#testMapperTypes |
ghost
left a comment
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.
Unreported flaky test detected, please review
b5f797c to
adca614
Compare
adca614 to
cfb0161
Compare
|
@mposolda I fixed the points and added documentation. Could you check it? |
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.
| passkey-unsupported-browser-text=Passkey is not supported by this browser. Try another one or contact your administrator. | |
| passkey-unsupported-browser-text=Passkey is not supported by this browser. Try another authentication method or contact your administrator. |
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.
Thank you. I will fix it.
|
@tnorimat @rmartinc Few points to this:
As a follow-up, we can improve also for the use-case of username & password authentication (something like @rmartinc did) and improve also the UX for the case when admin creates users instead of them self-registering themselves (maybe with slightly adjusted "Reset credentials" flow and added link for "Forget passkey" into the passkeys authenticator in case that "Forgot password" is enabled for the realm). WDYT? |
|
@mposolda OK to me, I would also document that the current implementation does not integrate webauthn conditional UI with the normal username-password login. |
+1, can be added in this PR as a NOTE to the docs with the notice that we plan to support this use-case in the future? |
699c81e to
7bfab28
Compare
|
@mposolda @rmartinc Sorry for my late reply.
The "passkey or password" authentication case is discussed in the following issue: |
mposolda
left a comment
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.
@tnorimat Thanks!
@andymunro Are you please able to re-review documentation changes in this PR?
jonkoops
left a comment
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.
| NOTE: Storage capacity is usually very limited on hardware passkeys meaning that you cannot store many discoverable credentials on your passkey. However this limitation may be mitigated for instance if you use Android phone backed by Google account as a passkey device or iPhone backed by Bitwarden. | |
| NOTE: Storage capacity is usually very limited on hardware passkeys meaning that you cannot store many discoverable credentials on your passkey. However, this limitation may be mitigated for instance if you use an Android phone backed by a Google account as a passkey device or an iPhone backed by Bitwarden. |
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.
Thank you. I fixed it as you suggested.
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.
| . Configure the authentication flow. Create a new authentication flow, add the *Passkeys Conditional UI Authenticator* execution and set the Requirement setting of the execution to *Required* | |
| . Configure the authentication flow. Create a new authentication flow, add the *Passkeys Conditional UI Authenticator* execution and set the Requirement setting of the execution to *Required*. |
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.
Thank you. I fixed it as you suggested.
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.
| . Bind the flow above as *browser* authentication flow in the realm as described in the <<_webauthn-register, WebAuthn section above>>. | |
| . Bind the flow above as a *browser* authentication flow in the realm as described in the <<_webauthn-register, WebAuthn section above>>. |
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.
Thank you. I fixed it as you suggested.
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.
| The authentication flow above requires that user must already have passkey credential on his account to be able to login. This means that all users in the realm must have passkeys already set. | |
| The authentication flow above requires that user must already have passkey credential on his or her account to be able to log in. This requirement means that all users in the realm must have passkeys already set. |
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.
Thank you. I fixed it as you suggested.
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.
| That can be achieved for instance by enable user registration as described below. | |
| That can be achieved for instance by enabling user registration as described below. |
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.
Thank you. I fixed it as you suggested.
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.
| This means that newly registered users will not be required to create the passwords as for this example setup, we want the users to always use passkeys instead of the passwords. | |
| This means that newly registered users will not be required to create the passwords in this example setup. Users must always use passkeys instead of passwords. |
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.
Thank you. I fixed it as you suggested.
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.
| . Go back to *Required actions* sub-tab of the tab *Authentication* tab and find the `Webauthn Register Passwordless` action and mark it with *Set as default action*. | |
| . Return to the *Required actions* sub-tab of the tab *Authentication* tab and find the `Webauthn Register Passwordless` action and mark it with *Set as default action*. |
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.
Thank you. I fixed it as you suggested.
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.
Not sure what "to test this" means.
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.
"to test this" is not needed so that I removed the words. Thank you.
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.
| We plan to improve the usability and allow to integrate conditional passkeys with the existing authenticators and forms like the default username / password form. | |
| We plan to improve the usability and allow integration of conditional passkeys with the existing authenticators and forms such as the default username / password form. |
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.
Thank you. I fixed it as you suggested.
andymunro
left a comment
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.
Looks good. A few suggestions for you, however.
closes keycloak#24264 Signed-off-by: Takashi Norimatsu <[email protected]>
closes keycloak#24264 Signed-off-by: mposolda <[email protected]>
7bfab28 to
761bbb3
Compare
|
@andymunro Thank you for your review. I fixed points you have suggested. |
mposolda
left a comment
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.
@tnorimat @andymunro Thanks!
closes #24264