Role-based Access Control Matrix
SKFS is unique in that it does not make available a software library that needs to be linked to applications to use FIDO; it is a full-blown enterprise-class server built to the Java Enterprise Edition (JEE) architecture, leveraging a relational database (MariaDB), FIPS-certified cryptographic libraries, etc. When deployed on the StrongKey Tellaro appliance, it also takes advantage of a FIPS 140-2 Level-2 or Level-3 cryptographic hardware module.
Applications take advantage of a rich set of web services—SOAP or REST—to use FIDO capabilities. As a consequence, many of the explicit details of how FIDO works are shielded from business application developers.
When an application needs to register a new FIDO Authenticator, the applications calls the preregister web service on SKFS to get a challenge. The application sends this to the browser, which in turn, calls functions on the authenticator using FIDO Client to Authenticator Protocol (CTAP). When the user has completed necessary actions with their FIDO authenticator and returned a response to the application, the application calls the register web service to complete the registration process.
Similarly, when a user needs to authenticate to the application, the application calls the preauthenticate web service to get a challenge. Upon getting a digital signature from the authenticator, the application calls the authenticate web service to complete the authentication process.
All such transactions with SKFS involve calling one web service or another. However, to ensure that only authorized applications can make such web service requests, SKFS includes an authentication and authorization framework for applications.
To determine an application’s authorization to call a specific web service for standard FIDO operations—registration, authentication, etc.—the application must be assigned a unique Service Credential. Much like a human supplies a username and a password to authenticate themselves, applications must be assigned a Service Credential Identifier (SCID)—a unique string, much like a username, that identifies the application. Some examples might be:
Two options are available in SKFS to authenticate the SCID:
An internal-facing application that performs administrative functions by calling a privileged web service performing administrative actions must be assigned an Administrator Credential Identifier (ACID)—a unique string, much like a username, that identifies the application. Some examples might be:
Authenticating the ACID offers similar options as for the SCID (see above).
SKFS has distinct web services for the items listed below:
It is recommended to separate credentials according to the operations a specific application or command-line interface (CLI) tool might call from the SKFS. This ensures applications will have the least privileges necessary to perform a given function.
Once an application’s web service request is authenticated, SKFS must determine its authorization to consume that web service. It does this by affirming that the SCID/ACID/FCID/PCID/MCID is part of an LDAP role (a.k.a. group) authorized for the operation in question.
SKFS organizes web services operations according to the privileges required to perform the operation. The following default names for the LDAP roles are used to clearly identify the operations; however, sites may choose to use their own role names as long as configuration properties for SKFS reflect the names of the LDAP groups present in the LDAP Directory Server used to determine authorizations.
The default names of the roles are listed here:
NOTE: If a Relying Party site anticipates that all applications within their network will need to access registration, authentication, and transaction confirmation services, they can choose to collapse these three roles into a single FIDOCoreOperationService-AuthorizedServiceCredentials role and add unique SCIDs for each application to this role.
Please also note that if the Registration, Authentication and Authorization roles are collapsed into a single "CoreOperation" role, the collapsed role name must be added to the SKFS configuration properties that affect registration, authentication, and authorization operations.
RP sites may create role with custom names within LDAP groups, or use any existing LDAP group name(s) from the RP's LDAP Directory Server, if desired. However, it will be necessary to modify SKFS configuration properties to identify the custom LDAP group-names before SKFS will use the new names.
The following table shows the different roles and web service operations to which each role is authorized to consume:
|
|
|
|
|
|
|
|
---|---|---|---|---|---|---|---|
register | x | ||||||
preregister | x | ||||||
authenticate | x | ||||||
preauthenticate | x | ||||||
authorize | x | ||||||
preauthorize | x | ||||||
getKeys | x | x | |||||
updateKeys | x | x | |||||
deleteKeys | x | x | |||||
addPolicy | x | ||||||
updatePolicy | x | ||||||
deletePolicy | x | ||||||
viewPolicy | x | x | x | ||||
addConfig | x | ||||||
updateConfig | x | ||||||
deleteConfig | x | ||||||
viewConfig | x | x | |||||
ping | x | x | |||||
updateUsername | x |