Design considerations

How to add new administrators

The initial idea was to just consume attributes from the federations ("eduPersonEntitlement" etc.) that state if a person is an NREN-admin or an institution-admin. This idea has been dropped due to several reasons:

It was decided to bootstrap Confusa using a bootstrap script with an initial NREN admin using the eduPersonPrincipalName and entitlement (eduPersonEntitlement, 'confusaAdmin'). All persons with this attribute set can be granted administrator-rights, it is a necessary, but not sufficient condition. In order to achieve administrator status, the ePPN must be added to the admins-table.
The admins-table states the type of admin a given user is. There are 3 kinds of adminstrators:
NREN-admin
Can add other NREN-admins and subscriber (sub)admins. Revocation rights should at least be given to the incident response team.
Subscriber admin
Can add other subscriber admins and subadmins as well as revoking certificates for all users belonging to the organization.
Subscriber subadmin
Can only revoke certificates, not add new admins. This intended to fulfill the IT-support scenario where the common action is to revoke certificates, but you want tight control over who is granted (sub)admin rights.



Confusa's approach to reauthentication

For sensitive actions like requesting a new certificate or revoking certificates, reauthenticating the user is desirable, so open and forgotten sessions by users who did not log out can not be abused by malicious third parties. A suggestion to handle reauth from NRENs foresees the following:

This approach is near optimal, because it exploits both the advantages of identity federations, allowing the user to not have to login for every service they use, while ensuring security for sensitive operations by enforcing reauthentication for them. Confusa does not use this approach, however. The reason is implementational. The only secure way to setup the above scenario with simplesamlphp implies configuring two different service providers, because the simplesamlphp-API call for forced reauthentication currently does not protect against replay-attacks.

Setting up two times two simplesamlphp service providers (escience and personal with and without forced reauth) is operationally unacceptable. Thus, we use a simplified approach.

Reauthentication with OAuth

The OAuth-AuthManager does not have explicit reauthentication. Currently, we extend the OAuthDataStore with our own subclass that gets the reauth-timeout parameter as it is retrieved on per-NREN basis via a special attribute. Subsequently, it limits the validity period of the OAuth access token to the validity period in the attribute. The access token will expire after the reauth-period, forcing the user to get a new one.