Use disabled template for mappings and lists
[cascardo/ipsilon.git] / doc / design.txt
1 Introduction
2 ------------
3
4 Ipsilon is an Identity Provider (IdP)
5
6 In our view an IdP is a gateway that allows applications to authenticate a
7 user "by proxy", ie deferring to the authentication proxy the actual
8 authentication.
9
10 Applications that most benefit from authentication by proxy are web
11 applications deployed by a third party (or an internal party) that do not
12 have direct access to the Identity store containing the user identity.
13
14 IdPs not only provide authentication, but can also provide user identity
15 information depending on the protocol used.
16
17 The Ipsilon Idp is by nature multi-protocol, both in the interface it
18 exposes to applications and in the authentication method supported. All the
19 protocols and authentication providers are implemented as plugins.
20
21 The use of a reduced set of external python dependencies is the driving
22 philosophy. This is to reduce the amount of maintenance required going
23 forward. By their very nature in fact, authentication protocols are very
24 slow moving, so we predict we can build a longer lived project if we avoid
25 the churn of adding fast moving frameworks or modules.
26
27 Architecture
28 ------------
29
30 Ipsilon is mostly a web service builtin in python on the cherrypy framework.
31 It is normally installed and run in an apache server and some plugins depend
32 on authentication modules available in apache like mod_auth_kerb.
33
34 Each authentication method is chained to the next in line so that automatic
35 fallback can happen and multiple authentication methods can be employed at
36 the same time. The administrator configures which authentication methods are
37 made available.
38
39 Identity Provider protocols are made available through a different set of
40 plugins. These methods own their subtrees but are required to reference the
41 authentication pugin to perform actual user authentication in most cases.
42
43 Identity information will be provided in future by pluggable identity
44 modules. However the most basic implementation will only use authentication
45 from external sources but will allow users to augment the information
46 provided to third parties by directly adding the information to thorugh the
47 IdP's own database.
48
49 The project is complemented by an install script that will perform all the
50 necessary configuration steps to set up the apche server and connect to the
51 external identity and authentication sources.
52
53 A companion client install script will be provided to automatically
54 configure, when possible, applications, and to perform the encessary
55 registration of applications, exchange of keys or other setup operations
56 necessary to allow third party application to interact with the selected
57 IdP protocol.