diff --git a/opensym2017/content/04-architecture.tex b/opensym2017/content/04-architecture.tex index 62106d7..ff74bfc 100644 --- a/opensym2017/content/04-architecture.tex +++ b/opensym2017/content/04-architecture.tex @@ -48,45 +48,24 @@ the change between applications. For that, Colab provides facilities for: \begin{itemize} - \item Centralized authentication - \item Visual consistency - \item Relaying of events between applications - \item Integrated search engine + \item \textit{Centralized authentication}: Users are automatically +identified for each application without having to enter login +credentials on each of them. + \item \textit{Visual consistency}: Colab is able to change the HTML +code produced by the integrated applications, such as defining default +template or reusing common HTML pages, in order to provide a unified +interface. + \item \textit{Relaying of events between applications}: The +integrated applications or Colab itself are able to trigger an action +on another application. + \item \textit{Integrated search engine}: It is possible to set up +exactly which data needs to be indexed from each application and how +users are directed to this information on correspondent application. \end{itemize} Colab implements this integration by working as a reverse proxy for the integration applications, that is, all external requests pass through -Colab before reaching them. - -Centralized authentication is handled by letting users authenticate to -Colab, which then sends a REMOTE\_USER HTTP header to applications, -which are expected to be pre-configured to accept that as an indication -of the current user (REMOTE\_USER is a standard authentication mechanism -for web applications). This allows users to be automatically identified -to each of the applications without having to enter credentials for each -of them. -% -Of course, this requires that the integrated applications are not -accessible on the public internet, otherwise malicious users could send -their own crafted REMOTE\_USER headers and impersonate any user. - -For the visual consistency, Colab is able to make transformations to the -HTML produced by the integrated applications, ir order to provide a -unified interface. It allows one to define default templates to be used -by all applications, as well as providing extra ones in a plugin. This -approach allowed us to reuse common HTML pages, what facilitates -maintenance. - -Colab also provides a publish-subscribe event system. This allows one of -the applications, or Colab itself, to trigger an action in another -application. For example, when a user registers with Colab, all -applications need to be notified in order to create their own internal -representation of that user account. - -Colab also provides an integrated search engine, which can be configured -to specify exactly what data needs to be indexed for each of the -applications, and how to direct the user to that piece of information on -the specific application. +Colab before reaching them. Initially, Colab had support for a small set of applications (Trac, GNU Mailman, and Apache Lucene) and support for them was hard-coded. Our -- libgit2 0.21.2