Commit b14ce14dd34c177f7b05c19838e98c16f9278c24
1 parent
a571497f
Exists in
master
Reducing explanation about Colab #15
Showing
1 changed file
with
14 additions
and
35 deletions
Show diff stats
opensym2017/content/04-architecture.tex
@@ -48,45 +48,24 @@ the change between applications. For that, Colab provides facilities | @@ -48,45 +48,24 @@ the change between applications. For that, Colab provides facilities | ||
48 | for: | 48 | for: |
49 | 49 | ||
50 | \begin{itemize} | 50 | \begin{itemize} |
51 | - \item Centralized authentication | ||
52 | - \item Visual consistency | ||
53 | - \item Relaying of events between applications | ||
54 | - \item Integrated search engine | 51 | + \item \textit{Centralized authentication}: Users are automatically |
52 | +identified for each application without having to enter login | ||
53 | +credentials on each of them. | ||
54 | + \item \textit{Visual consistency}: Colab is able to change the HTML | ||
55 | +code produced by the integrated applications, such as defining default | ||
56 | +template or reusing common HTML pages, in order to provide a unified | ||
57 | +interface. | ||
58 | + \item \textit{Relaying of events between applications}: The | ||
59 | +integrated applications or Colab itself are able to trigger an action | ||
60 | +on another application. | ||
61 | + \item \textit{Integrated search engine}: It is possible to set up | ||
62 | +exactly which data needs to be indexed from each application and how | ||
63 | +users are directed to this information on correspondent application. | ||
55 | \end{itemize} | 64 | \end{itemize} |
56 | 65 | ||
57 | Colab implements this integration by working as a reverse proxy for the | 66 | Colab implements this integration by working as a reverse proxy for the |
58 | integration applications, that is, all external requests pass through | 67 | integration applications, that is, all external requests pass through |
59 | -Colab before reaching them. | ||
60 | - | ||
61 | -Centralized authentication is handled by letting users authenticate to | ||
62 | -Colab, which then sends a REMOTE\_USER HTTP header to applications, | ||
63 | -which are expected to be pre-configured to accept that as an indication | ||
64 | -of the current user (REMOTE\_USER is a standard authentication mechanism | ||
65 | -for web applications). This allows users to be automatically identified | ||
66 | -to each of the applications without having to enter credentials for each | ||
67 | -of them. | ||
68 | -% | ||
69 | -Of course, this requires that the integrated applications are not | ||
70 | -accessible on the public internet, otherwise malicious users could send | ||
71 | -their own crafted REMOTE\_USER headers and impersonate any user. | ||
72 | - | ||
73 | -For the visual consistency, Colab is able to make transformations to the | ||
74 | -HTML produced by the integrated applications, ir order to provide a | ||
75 | -unified interface. It allows one to define default templates to be used | ||
76 | -by all applications, as well as providing extra ones in a plugin. This | ||
77 | -approach allowed us to reuse common HTML pages, what facilitates | ||
78 | -maintenance. | ||
79 | - | ||
80 | -Colab also provides a publish-subscribe event system. This allows one of | ||
81 | -the applications, or Colab itself, to trigger an action in another | ||
82 | -application. For example, when a user registers with Colab, all | ||
83 | -applications need to be notified in order to create their own internal | ||
84 | -representation of that user account. | ||
85 | - | ||
86 | -Colab also provides an integrated search engine, which can be configured | ||
87 | -to specify exactly what data needs to be indexed for each of the | ||
88 | -applications, and how to direct the user to that piece of information on | ||
89 | -the specific application. | 68 | +Colab before reaching them. |
90 | 69 | ||
91 | Initially, Colab had support for a small set of applications (Trac, GNU | 70 | Initially, Colab had support for a small set of applications (Trac, GNU |
92 | Mailman, and Apache Lucene) and support for them was hard-coded. Our | 71 | Mailman, and Apache Lucene) and support for them was hard-coded. Our |