86e666742bc944743df0932bd88a2527a05bcc93
[sdnc/oam.git] / installation / sdnc / src / main / resources / aaa-app-config.xml
1 <?xml version="1.0" ?>
2 <!--
3      Copyright (c) 2017 Inocybe Technologies and others.  All rights reserved.
4
5      This program and the accompanying materials are made available under the
6      terms of the Eclipse Public License v1.0 which accompanies this distribution,
7      and is available at http://www.eclipse.org/legal/epl-v10.html
8 -->
9
10 <!--
11   ///////////////////////////////////////////////////////////////////////////////////////
12   // clustered-app-config instance responsible for AAA configuration.  In the future,  //
13   // this will contain all AAA related configuration.                                  //
14   ///////////////////////////////////////////////////////////////////////////////////////
15 -->
16
17 <shiro-configuration xmlns="urn:opendaylight:aaa:app:config">
18
19     <!--
20       ///////////////////////////////////////////////////////////////////////////////////
21       // shiro-configuration is the model based container that contains all shiro      //
22       // related information used in ODL AAA configuration.  It is the sole pain of    //
23       // glass for shiro related configuration, and is how to configure shiro concepts //
24       // such as:                                                                      //
25       // * realms                                                                      //
26       // * urls                                                                        //
27       // * security manager settings                                                   //
28       //                                                                               //
29       // In general, you really shouldn't muck with the settings in this file.  The    //
30       // way an operator should configure AAA shiro settings is through one of ODL's   //
31       // northbound interfaces (i.e., RESTCONF or NETCONF).  These are just the        //
32       // defaults if no values are specified in MD-SAL.  The reason this file is so    //
33       // verbose is for two reasons:                                                   //
34       // 1) to demonstrate payload examples for plausible configuration scenarios      //
35       // 2) to allow bootstrap of the controller (first time start) since otherwise    //
36       //    configuration becomes a chicken and the egg problem.                       //
37       //                                                                               //
38       ///////////////////////////////////////////////////////////////////////////////////
39     -->
40
41     <!--
42       ===================================================================================
43       =                                                                                 =
44       =                                                                                 =
45       =                                      MAIN                                       =
46       =                                                                                 =
47       =                                                                                 =
48       ===================================================================================
49     -->
50
51     <!--
52       ===================================================================================
53       ============================ ODLJndiLdapRealmAuthNOnly ============================
54       ===================================================================================
55       =                                                                                 =
56       = Description:  A Realm implementation aimed at federating with an external LDAP  =
57       =               server for authentication only.  For authorization support, refer =
58       =               to ODLJndiLdapRealm.                                              =
59       ===================================================================================
60     -->
61     <!-- Start ldapRealm commented out
62     <main>
63         <pair-key>ldapRealm</pair-key>
64         <pair-value>org.opendaylight.aaa.shiro.realm.ODLJndiLdapRealmAuthNOnly</pair-value>
65     </main>
66     <main>
67         <pair-key>ldapRealm.userDnTemplate</pair-key>
68         <pair-value>uid={0},ou=People,dc=DOMAIN,dc=TLD</pair-value>
69     </main>
70     <main>
71         <pair-key>ldapRealm.contextFactory.url</pair-key>
72         <pair-value>ldap://&lt;URL&gt;:389</pair-value>
73     </main>
74     <main>
75         <pair-key>ldapRealm.searchBase</pair-key>
76         <pair-value>dc=DOMAIN,dc=TLD</pair-value>
77     </main>
78     <main>
79         <pair-key>ldapRealm.groupRolesMap</pair-key>
80         <pair-value>&quot;person&quot;:&quot;admin&quot;, &quot;organizationalPerson&quot;:&quot;user&quot;</pair-value>
81     </main>
82     <main>
83         <pair-key>ldapRealm.ldapAttributeForComparison</pair-key>
84         <pair-value>objectClass</pair-value>
85     </main>
86     End ldapRealm commented out-->
87
88     <!--
89       ===================================================================================
90       ============================= ODLActiveDirectoryRealm =============================
91       ===================================================================================
92       =                                                                                 =
93       = Description:  A Realm implementation aimed at federating with an external AD    =
94       =               IDP server.                                                       =
95       ===================================================================================
96     -->
97     <!-- Start adRealm commented out
98     <main>
99         <pair-key>adRealm</pair-key>
100         <pair-value>org.opendaylight.aaa.shiro.realm.ODLActiveDirectoryRealm</pair-value>
101     </main>
102     <main>
103         <pair-key>adRealm.searchBase</pair-key>
104         <pair-value>&quot;CN=Users,DC=example,DC=com&quot;</pair-value>
105     </main>
106     <main>
107         <pair-key>adRealm.systemUsername</pair-key>
108         <pair-value>aduser@example.com</pair-value>
109     </main>
110     <main>
111         <pair-key>adRealm.systemPassword</pair-key>
112         <pair-value>adpassword</pair-value>
113     </main>
114     <main>
115         <pair-key>adRealm.url</pair-key>
116         <pair-value>ldaps://adserver:636</pair-value>
117     </main>
118     <main>
119         <pair-key>adRealm.groupRolesMap</pair-key>
120         <pair-value>&quot;CN=sysadmin,CN=Users,DC=example,DC=com&quot;:&quot;admin&quot;, &quot;CN=unprivileged,CN=Users,DC=example,DC=com&quot;:&quot;user&quot;</pair-value>
121     </main>
122     End adRealm commented out-->
123
124     <!--
125       ===================================================================================
126       ================================== ODLJdbcRealm ===================================
127       ===================================================================================
128       =                                                                                 =
129       = Description:  A Realm implementation aimed at federating with an external JDBC  =
130       =               DBMS.                                                             =
131       ===================================================================================
132     -->
133     <!-- Start jdbcRealm commented out
134     <main>
135         <pair-key>ds</pair-key>
136         <pair-value>com.mysql.jdbc.Driver</pair-value>
137     </main>
138     <main>
139         <pair-key>ds.serverName</pair-key>
140         <pair-value>localhost</pair-value>
141     </main>
142     <main>
143         <pair-key>ds.user</pair-key>
144         <pair-value>user</pair-value>
145     </main>
146     <main>
147         <pair-key>ds.password</pair-key>
148         <pair-value>password</pair-value>
149     </main>
150     <main>
151         <pair-key>ds.databaseName</pair-key>
152         <pair-value>db_name</pair-value>
153     </main>
154     <main>
155         <pair-key>jdbcRealm</pair-key>
156         <pair-value>ODLJdbcRealm</pair-value>
157     </main>
158     <main>
159         <pair-key>jdbcRealm.dataSource</pair-key>
160         <pair-value>$ds</pair-value>
161     </main>
162     <main>
163         <pair-key>jdbcRealm.authenticationQuery</pair-key>
164         <pair-value>&quot;SELECT password FROM users WHERE user_name = ?&quot;</pair-value>
165     </main>
166     <main>
167         <pair-key>jdbcRealm.userRolesQuery</pair-key>
168         <pair-value>&quot;SELECT role_name FROM user_rolesWHERE user_name = ?&quot;</pair-value>
169     </main>
170     End jdbcRealm commented out-->
171
172     <!--
173       ===================================================================================
174       ================================= TokenAuthRealm ==================================
175       ===================================================================================
176       =                                                                                 =
177       = Description:  A Realm implementation utilizing a per node H2 database store.    =
178       ===================================================================================
179     -->
180     <main>
181         <pair-key>tokenAuthRealm</pair-key>
182         <pair-value>org.onap.aaf.cadi.shiro.AAFRealm</pair-value>
183         <!-- <pair-value>org.opendaylight.aaa.shiro.realm.TokenAuthRealm</pair-value> -->
184     </main>
185
186     <!--
187       ===================================================================================
188       =================================== MdsalRealm ====================================
189       ===================================================================================
190       =                                                                                 =
191       = Description:  A Realm implementation utilizing the aaa.yang model.              =
192       ===================================================================================
193     -->
194     <!-- Start mdsalRealm commented out
195     <main>
196         <pair-key>mdsalRealm</pair-key>
197         <pair-value>org.opendaylight.aaa.shiro.realm.MdsalRealm</pair-value>
198     </main>
199     End mdsalRealm commented out-->
200
201     <!--
202       ===================================================================================
203       ================================= MoonAuthRealm ===================================
204       ===================================================================================
205       =                                                                                 =
206       = Description:  A Realm implementation aimed at federating with OPNFV Moon.       =
207       ===================================================================================
208     -->
209     <!-- Start moonAuthRealm commented out
210     <main>
211         <pair-key>moonAuthRealm</pair-key>
212         <pair-value>org.opendaylight.aaa.shiro.realm.MoonRealm</pair-value>
213     </main>
214     <main>
215         <pair-key>moonAuthRealm.moonServerURL</pair-key>
216         <pair-value>http://&lt;host&gt;:&lt;port&gt;</pair-value>
217     </main>
218     End moonAuthRealm commented out-->
219
220     <!--
221       ===================================================================================
222       ================================= KeystoneAuthRealm == ============================
223       ===================================================================================
224       =                                                                                 =
225       = Description:  A Realm implementation aimed at federating with an OpenStack      =
226       =               Keystone.                                                         =
227       ===================================================================================
228     -->
229     <!-- Start keystoneAuthRealm commented out
230     <main>
231         <pair-key>keystoneAuthRealm</pair-key>
232         <pair-value>org.opendaylight.aaa.shiro.realm.KeystoneAuthRealm</pair-value>
233     </main>
234     <main>
235         <pair-key>keystoneAuthRealm.url</pair-key>
236         <pair-value>https://&lt;host&gt;:&lt;port&gt;</pair-value>
237     </main>
238     <main>
239         <pair-key>keystoneAuthRealm.sslVerification</pair-key>
240         <pair-value>true</pair-value>
241     </main>
242     <main>
243         <pair-key>keystoneAuthRealm.defaultDomain</pair-key>
244         <pair-value>Default</pair-value>
245     </main>
246     -->
247
248     <!--
249     Add tokenAuthRealm as the only realm.  To enable mdsalRealm, add it to the list to he right of tokenAuthRealm.
250     -->
251     <main>
252         <pair-key>securityManager.realms</pair-key>
253         <pair-value>$tokenAuthRealm</pair-value>
254     </main>
255     <!-- Used to support OAuth2 use case. -->
256     <main>
257         <pair-key>authcBasic</pair-key>
258         <pair-value>org.opendaylight.aaa.shiro.filters.ODLHttpAuthenticationFilter</pair-value>
259     </main>
260
261     <!-- Start moonAuthRealm commented out
262     <main>
263         <pair-key>rest</pair-key>
264         <pair-value>org.opendaylight.aaa.shiro.filters.MoonOAuthFilter</pair-value>
265     </main>
266     End moonAuthRealm commented out-->
267
268     <!-- in order to track AAA challenge attempts -->
269     <main>
270         <pair-key>accountingListener</pair-key>
271         <pair-value>org.opendaylight.aaa.shiro.filters.AuthenticationListener</pair-value>
272     </main>
273     <main>
274         <pair-key>securityManager.authenticator.authenticationListeners</pair-key>
275         <pair-value>$accountingListener</pair-value>
276     </main>
277
278     <!-- Model based authorization scheme supporting RBAC for REST endpoints -->
279     <main>
280         <pair-key>dynamicAuthorization</pair-key>
281         <pair-value>org.opendaylight.aaa.shiro.realm.MDSALDynamicAuthorizationFilter</pair-value>
282     </main>
283
284
285     <!--
286       ===================================================================================
287       =                                                                                 =
288       =                                                                                 =
289       =                                      URLS                                       =
290       =                                                                                 =
291       =                                                                                 =
292       ===================================================================================
293     -->
294     <!-- Start moonAuthRealm commented out
295     <urls>
296         <pair-key>/token</pair-key>
297         <pair-value>rest</pair-value>
298     </urls>
299     End moonAuthRealm commented out-->
300    <!-- URLS comment out
301     <urls>
302         <pair-key>/operations/cluster-admin**</pair-key>
303         <pair-value>authcBasic, roles[admin]</pair-value>
304     </urls>
305     <urls>
306         <pair-key>/v1/**</pair-key>
307         <pair-value>authcBasic, roles[admin]</pair-value>
308     </urls>
309     <urls>
310         <pair-key>/config/aaa*/**</pair-key>
311         <pair-value>authcBasic, roles[admin]</pair-value>
312     </urls>
313     End URLS commented out -->
314     <urls>
315         <pair-key>/**</pair-key>
316         <!-- <pair-value>authcBasic</pair-value> -->
317         <pair-value>authcBasic, rest[org.onap.sdnc.odl:odl-api]</pair-value>
318     </urls>
319 </shiro-configuration>
320