EventsService authorization refactor
[dmaap/messagerouter/msgrtr.git] / src / main / java / org / onap / dmaap / dmf / mr / security / DMaaPAAFAuthenticatorImpl.java
1 /*******************************************************************************
2  *  ============LICENSE_START=======================================================
3  *  org.onap.dmaap
4  *  ================================================================================
5  *  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6  *  ================================================================================
7  *  Licensed under the Apache License, Version 2.0 (the "License");
8  *  you may not use this file except in compliance with the License.
9  *  You may obtain a copy of the License at
10  *        http://www.apache.org/licenses/LICENSE-2.0
11 *  
12  *  Unless required by applicable law or agreed to in writing, software
13  *  distributed under the License is distributed on an "AS IS" BASIS,
14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  *  See the License for the specific language governing permissions and
16  *  limitations under the License.
17  *  ============LICENSE_END=========================================================
18  *  
19  *  ECOMP is a trademark and service mark of AT&T Intellectual Property.
20  *  
21  *******************************************************************************/
22 package org.onap.dmaap.dmf.mr.security;
23
24 import com.att.ajsc.filemonitor.AJSCPropertiesMap;
25 import javax.servlet.http.HttpServletRequest;
26
27 import org.onap.dmaap.dmf.mr.CambriaApiException;
28 import org.onap.dmaap.dmf.mr.constants.CambriaConstants;
29
30
31 /**
32  * 
33  * @author sneha.d.desai
34  *
35  */
36 public class DMaaPAAFAuthenticatorImpl implements DMaaPAAFAuthenticator {
37
38         private static final String NAMESPACE_PROPERTY = "defaultNSforUEB";
39   private static final String DEFAULT_NAMESPACE = "org.onap.dmaap.mr";
40   private static final String NAMESPACE_PREFIX = "org.onap";
41
42         /**
43          * @param req
44          * @param role
45          */
46         @Override
47         public boolean aafAuthentication(HttpServletRequest req, String role) {
48                 return req.isUserInRole(role);
49         }
50
51         @Override
52         public String aafPermissionString(String topicName, String action) throws CambriaApiException {
53
54                 String nameSpace = topicName.startsWith(NAMESPACE_PREFIX) ? parseNamespace(topicName) :
55                         readNamespaceFromProperties();
56
57                 nameSpace = !nameSpace.isEmpty()? nameSpace : DEFAULT_NAMESPACE;
58
59                 return new StringBuilder(nameSpace).append(".topic|:topic.").append(topicName)
60                         .append("|").append(action).toString();
61         }
62
63         String readNamespaceFromProperties() {
64                 return AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,NAMESPACE_PROPERTY);
65         }
66
67         private String parseNamespace(String topicName) {
68                 return topicName.substring(0,topicName.lastIndexOf('.'));
69         }
70
71 }