/
WebAuthnAuthnConfiguration

WebAuthnAuthnConfiguration

Overview

The authn/WebAuthn login flow supports the Web Authentication API (WebAuthn) as part of the FIDO2 standard—enabling FIDO2 authentication. This allows public-key-based strong authentication of users. The plugin can operate as either a single-factor within a wider multi-factor authentication, as a sole-factor where the username is first supplied by the user (passwordless), or as a sole-factor where the username is not supplied by the user and is instead implicitly identified from the credential they choose (usernameless).

Plugin Installation

Plugin

Plugin ID

Module(s)

Depends On

Authentication Flow ID

Latest Version

Bug Reporting

Plugin

Plugin ID

Module(s)

Depends On

Authentication Flow ID

Latest Version

Bug Reporting

WebAuthn Authentication Plugin

net.shibboleth.idp.plugin.authn.webauthn

idp.authn.WebAuthn

 

authn/WebAuthn

1.0.0

JWEBAUTHN

Enabling the Module

For a detailed guide on configuring modules, see the ModuleConfiguration topic. Once the plugin has been installed, its module should be enabled automatically for you:

Check Module Is Enabled
/%{idp.home}/bin$ ./module.sh -l ... Module: idp.authn.WebAuthn [ENABLED]

However, if you need to enable it you can using the module command:

Enable the module
/%{idp.home}/bin$ ./module.sh -e idp.authn.WebAuthn

Either manual or automatic module enablement will copy across the following configuration files from the jar:

Configuration files

File

Description

File

Description

conf/authn/webauthn.properties

Properties file for configuration of the plugin

conf/authn/webauthn-registration.properties

Properties file for the configuration of the plugin’s registration admin flow

conf/authn/webauthn-metadata.properties

Properties file for the configuration of the plugin’s FIDO2 metadata handling

conf/authn/webauthn-config.xml

XML file for configuration of new beans for the plugin

conf/authn/webauthn-registration-config.xml

XML file for configuration of new beans for the plugin’s registration admin flow

conf/authn/webauthn-management-config.xml

XML file for configuration of new beans for the plugin’s credential management admin flow

views/webauthn/webauthn-authn.vm

The authentication view

views/webauthn/webauthn-authn-username.vm

A username collection view for passwordless authentication

views/webauthn/webauthn-register.vm

The credential registration view

views/webauthn/webauthn-register-username.vm

A username collection view for the registration view

views/webauthn/webauthn-management.vm

A user credential management view, for administrators

views/webauthn/webauthn-management-search.vm

A user credential management search view, for administrators

views/webauthn/webauthn-end.vm

A terminating view for all flows

edit-webapp/css/webauthn.css

Additional styling for the WebAuthn views

edit-webapp/js/webauthn-json.browser-ponyfill.min.js

Javascript library that wraps the WebAuthn API for encoding binary data

edit-webapp/js/webauthn-support.js

Additional Javascript to support functions on the WebAuthn views

Overview of Configuration Steps

Configuration of the WebAuthn Relying Party

The IdP acts as a WebAuthn Relying Party when initiating the Web Authentication API to register and authenticate users. The identity of the Relying Party (IdP) must be configured in conf/authn/webauthn.properties.

  • Required relyingPartyId: A valid domain string. Set to the IdP’s origin’s effective domain. FIDO2 credentials are scoped to, and can only be used for, a relying party. It does not include a scheme (it must be HTTPS) or port (as a normal origin would). Credentials are scoped to the Relying Party ID.

    • Note, ‘localhost’ can be used for testing.

  • Required relyingPartyName: a human-palatable identifier for the relying party. Used for display purposes.

  • Optional allowPortOrigin: If true, any port is allowed for the given origin.

  • Optional allowOriginSubdomain: If true, any subdomain (of any depth) is allowed for the given origin.

  • Optional allowOrigins: Comma-separated set of origins to allow in responses from an authenticator for this Relying Party. If not set, the Relying Party ID is used (assuming the HTTPS scheme and the default port 443). Note, unlike the Relying Party ID, this includes the scheme and port.

# The IdP's origin idp.authn.webauthn.relyingPartyId = localhost idp.authn.webauthn.relyingPartyName = My IdP Name # Allow any port of 'localhost' idp.authn.webauthn.allowOriginPort = true # Allow any subdomain of 'localhost' idp.authn.webauthn.allowOriginSubdomain = false

 

Related pages