Participants ------------ (((ECSA,overview))) A particpant represents a legal client in an ECSA network. /////////// [[participant_basic_requirements]] /////////// Basic functionalities and requirements ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Technology / Architecture ^^^^^^^^^^^^^^^^^^^^^^^^^ (((participant,technology))) (((participant,architecture))) - has to communicate with the ECS as a ifdef::hyperdoc[{rest_home_lnk}[REST]] ifndef::hyperdoc[REST footnote:[REST Homepage see {rest_home_txt}]] client. ifdef::hyperdoc[- {http_1_1_lnk}[HTTP 1.1]] ifndef::hyperdoc[- HTTP 1.1 footnote:[HTTP 1.1 see {http_1_1_txt}]] as transport and application protocol - provide persistent connection (keep-alive) - provide SSL/TLS transport layer - has to use ifdef::hyperdoc[{utf_8_lnk}[UTF-8]] ifndef::hyperdoc[UTF-8 footnote:[UTF-8 see {utf_8_lnk_txt}]] Authentication ^^^^^^^^^^^^^^ (((participant,authentication))) ifdef::hyperdoc[- {http_basic_auth_lnk}[HTTP Basic auth]] ifndef::hyperdoc[- HTTP Basic auth footnote:[HTTP Basic auth see {http_basic_auth_txt}]] - X.509 Certificates (SSL/TLS client authentication) Authorization ~~~~~~~~~~~~~ (((participant,authorization))) A client should be able to use a simple "one touch token" authorization through the ECS `sys/auths` resource. This token could be used to accomplish deligated authorization for accessing resources on participants of a common ECSA network. E.g. in redirecting users clicking on course links or in ifdef::hyperdoc[<<_direct_participant_to_participant_communication,direct communicating of participants>>.] ifndef::hyperdoc[direct communicating of participants (see <<_direct_participant_to_participant_communication>>).] ////////////////////////////////// ECS REST interface ~~~~~~~~~~~~~~~~~~ ////////////////////////////////// Ressource extensions / alterations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (((participant,ressource extensions))) To make resource extensions and alteration possible the clients have to easily permit - additional ressources - extensible data formats - Postels's Law (robustness principle): _Be conservative in what you send; be liberal in what you accept._ - versioning through request and response header (content negotiation) * Accept: application/vnd.my-format.v1+json * Accept: application/vnd.my-format.v2+json