fixed oauth scenario
[sdnc/oam.git] / installation / sdnc / src / main / resources / oauth-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.opendaylight.aaa.shiro.realm.TokenAuthRealm</pair-value> -->
183 <!--     </main> -->
184     <main>
185         <pair-key>tokenAuthRealm</pair-key>
186         <pair-value>org.onap.ccsdk.features.sdnr.wt.oauthprovider.OAuth2Realm</pair-value>
187     </main>
188
189     <!--
190       ===================================================================================
191       =================================== MdsalRealm ====================================
192       ===================================================================================
193       =                                                                                 =
194       = Description:  A Realm implementation utilizing the aaa.yang model.              =
195       ===================================================================================
196     -->
197     <!-- Start mdsalRealm commented out
198     <main>
199         <pair-key>mdsalRealm</pair-key>
200         <pair-value>org.opendaylight.aaa.shiro.realm.MdsalRealm</pair-value>
201     </main>
202     End mdsalRealm commented out-->
203
204     <!--
205       ===================================================================================
206       ================================= MoonAuthRealm ===================================
207       ===================================================================================
208       =                                                                                 =
209       = Description:  A Realm implementation aimed at federating with OPNFV Moon.       =
210       ===================================================================================
211     -->
212     <!-- Start moonAuthRealm commented out
213     <main>
214         <pair-key>moonAuthRealm</pair-key>
215         <pair-value>org.opendaylight.aaa.shiro.realm.MoonRealm</pair-value>
216     </main>
217     <main>
218         <pair-key>moonAuthRealm.moonServerURL</pair-key>
219         <pair-value>http://&lt;host&gt;:&lt;port&gt;</pair-value>
220     </main>
221     End moonAuthRealm commented out-->
222
223     <!--
224       ===================================================================================
225       ================================= KeystoneAuthRealm == ============================
226       ===================================================================================
227       =                                                                                 =
228       = Description:  A Realm implementation aimed at federating with an OpenStack      =
229       =               Keystone.                                                         =
230       ===================================================================================
231     -->
232     <!-- Start keystoneAuthRealm commented out
233     <main>
234         <pair-key>keystoneAuthRealm</pair-key>
235         <pair-value>org.opendaylight.aaa.shiro.realm.KeystoneAuthRealm</pair-value>
236     </main>
237     <main>
238         <pair-key>keystoneAuthRealm.url</pair-key>
239         <pair-value>https://&lt;host&gt;:&lt;port&gt;</pair-value>
240     </main>
241     <main>
242         <pair-key>keystoneAuthRealm.sslVerification</pair-key>
243         <pair-value>true</pair-value>
244     </main>
245     <main>
246         <pair-key>keystoneAuthRealm.defaultDomain</pair-key>
247         <pair-value>Default</pair-value>
248     </main>
249     -->
250
251     <!--
252     Add tokenAuthRealm as the only realm.  To enable mdsalRealm, add it to the list to he right of tokenAuthRealm.
253     -->
254     <main>
255         <pair-key>securityManager.realms</pair-key>
256         <pair-value>$tokenAuthRealm</pair-value>
257     </main>
258     <!-- Used to support OAuth2 use case. -->
259     <main>
260         <pair-key>authcBasic</pair-key>
261         <pair-value>org.opendaylight.aaa.shiro.filters.ODLHttpAuthenticationFilter</pair-value>
262     </main>
263     <main>
264         <pair-key>anyroles</pair-key>
265         <pair-value>org.opendaylight.aaa.shiro.filters.AnyRoleHttpAuthenticationFilter</pair-value>
266     </main>
267     <main>
268         <pair-key>authcBearer</pair-key>
269         <pair-value>org.opendaylight.aaa.shiro.filters.ODLHttpAuthenticationFilter2</pair-value>
270     </main>
271    
272     <!-- Start moonAuthRealm commented out
273     <main>
274         <pair-key>rest</pair-key>
275         <pair-value>org.opendaylight.aaa.shiro.filters.MoonOAuthFilter</pair-value>
276     </main>
277     End moonAuthRealm commented out-->
278
279     <!-- in order to track AAA challenge attempts -->
280     <main>
281         <pair-key>accountingListener</pair-key>
282         <pair-value>org.opendaylight.aaa.shiro.filters.AuthenticationListener</pair-value>
283     </main>
284     <main>
285         <pair-key>securityManager.authenticator.authenticationListeners</pair-key>
286         <pair-value>$accountingListener</pair-value>
287     </main>
288
289     <!-- Model based authorization scheme supporting RBAC for REST endpoints -->
290     <main>
291         <pair-key>dynamicAuthorization</pair-key>
292         <pair-value>org.opendaylight.aaa.shiro.realm.MDSALDynamicAuthorizationFilter</pair-value>
293     </main>
294 <!--     <main> -->
295 <!--         <pair-key>securityManager.sessionManager.sessionIdCookieEnabled</pair-key> -->
296 <!--         <pair-value>false</pair-value> -->
297 <!--     </main> -->
298
299     <!--
300       ===================================================================================
301       =                                                                                 =
302       =                                                                                 =
303       =                                      URLS                                       =
304       =                                                                                 =
305       =                                                                                 =
306       ===================================================================================
307     -->
308     <!-- Start moonAuthRealm commented out
309     <urls>
310         <pair-key>/token</pair-key>
311         <pair-value>rest</pair-value>
312     </urls>
313     End moonAuthRealm commented out-->
314     <urls>
315         <pair-key>/**/operations/cluster-admin**</pair-key>
316         <pair-value>authcBearer, roles[admin]</pair-value>
317     </urls>
318     <urls>
319         <pair-key>/**/v1/**</pair-key>
320         <pair-value>authcBearer, roles[admin]</pair-value>
321     </urls>
322     <urls>
323         <pair-key>/**/config/aaa*/**</pair-key>
324         <pair-value>authcBearer, roles[admin]</pair-value>
325     </urls>
326      <urls>
327         <pair-key>/oauth/**</pair-key>
328         <pair-value>anon</pair-value>
329     </urls>
330     <urls>
331         <pair-key>/odlux/**</pair-key>
332         <pair-value>anon</pair-value>
333     </urls>
334     <urls>
335         <pair-key>/apidoc/**</pair-key>
336         <pair-value>authcBasic</pair-value>
337     </urls>
338     <urls>
339         <pair-key>/rests/**</pair-key>
340         <pair-value>authcBearer, roles[admin]</pair-value>
341     </urls>
342     <urls>
343         <pair-key>/**</pair-key>
344         <pair-value>authcBearer, roles[admin]</pair-value>
345     </urls>
346 </shiro-configuration>
347