IdP API

We here go through the REST end-points available at the servers realizing a (virtual) IdP.

Global IdP API

All IdPs have the following API handles available. Each are accessible through REST. Otherwise they can be accessed through calls to the specific IdP classes in package eu.olympus.server.

GetCertificate

Returns a certificate containing the server’s public Signature verification key, used to verify client tokens. If a distributed IdP is in place, this will be the same key for all servers.

Administration

Start Refresh

The server will initiate a key-share refresh with the other servers.

Pesto and pABC IdPs

The following methods are specific for the Pesto and pABC IdP setting and are intended to be call by the relevant client.

Perform OPRF (Username, Nonce, Cryptographic value, Token, TokenType)

Performs an OPRF operation on a cryptographic value based on a nonce (constructed using the user’s password). If an account for a user with the given Username already exists then the optional Token of TokenType is also validated before carrying out the OPRF operation. The user will use the output to (re)generate a public/private signing key pair.

Extra calls to Pesto IdPs

On top of the methods above a Pesto IdP also affords the following methods:

Extra calls to pABC IdPs

On top of the methods above a pABC IdP also affords the following methods:

Get dp-ABC Public Parameters

Returns the dp-ABC specific parameters of the servers.

IdP 2 IdP

Add Partial Server Signature (Username, PartialSignature)

Receive a Partial server Signature on a Username from another server. This is used during user account creation or user password change to ensure that each server knows that all servers agree that they have received a request from a given user.

Add Partial MFA Secret (Username, Secret, TokenType)

Receive a partial secret for an MFA of TokenType for the user with a specific Username. This is used during MFA request by a user to construct a shared MFA secret among the servers.

Add Mastershare (Nonce share, Key share)

Receive a share of a nonce and the server’s master key. This is used during key refreshing to receive nonce and master key shares from the other partial IdP servers allowing the given server to update its signing and OPRF keys by restoring its master key share.

Add Key Share (ID, Key share)

Receive a sharing of an other partial IdP’s master key share. This is used during key share refresh to allow each server to keep a secret shared backup of their master key share on the other servers.

Password JWT and Distributed RSA IdPs

The following methods are specific for the Password JWT and Distributed RSA IdP setting.

CreateUser (Username, Password)

Creates a new user account based on a Username and Password. Fails if an account already exists with the given Username.

CreateUserAndAddAttributes (Username, Password, idProof)

Creates a new user account based on a Username and Password and associates certain attributes with this user’s identity based on the data contained in idProof. Fails if an account already exists with the given Username or if the proof of the user’s attributes is not accepted.

StartSession (Username, Password, Token, TokenType)

Start a new session of an already existing user based on their Username, Password and optionally a MFA token of a certain type (required if an MFA of TokenType has been added for that user). If the authentication succeeds then a time-constrained session Cookie is returned to the user which they use to authenticate themselves towards the server for the rest of the session.