configurable AAF permissions parts
[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  * @author sneha.d.desai
33  *
34  */
35 public class DMaaPAAFAuthenticatorImpl implements DMaaPAAFAuthenticator {
36
37         private static final String NAMESPACE_PROPERTY = "defaultNSforUEB";
38         private static final String DEFAULT_NAMESPACE = "org.onap.dmaap.mr";
39         private static final String NAMESPACE_PREFIX = "org.onap";
40         private static final String NAMESPACE_PREFIX_VAR = "namespacePrefix";
41         private static final String DEFAULT_NAMESPACE_VAR = "defaultNamespace";
42         private static final String INSTANCE_PART_VAR = "pubSubInstPart";
43
44         /**
45          * @param req
46          * @param role
47          */
48         @Override
49         public boolean aafAuthentication(HttpServletRequest req, String role) {
50                 return req.isUserInRole(role);
51         }
52
53         @Override
54         public String aafPermissionString(String topicName, String action) throws CambriaApiException {
55
56                 String nameSpace = topicName.startsWith(
57                                 System.getenv(NAMESPACE_PREFIX_VAR) != null ? System.getenv(NAMESPACE_PREFIX_VAR) : NAMESPACE_PREFIX)
58                                                 ? parseNamespace(topicName) : readNamespaceFromProperties();
59
60                 nameSpace = !nameSpace.isEmpty() ? nameSpace
61                                 : (System.getenv(DEFAULT_NAMESPACE_VAR) != null ? System.getenv(DEFAULT_NAMESPACE_VAR)
62                                                 : DEFAULT_NAMESPACE);
63
64                 return new StringBuilder(nameSpace).append(
65                                 (System.getenv(INSTANCE_PART_VAR) != null ? System.getenv(INSTANCE_PART_VAR) : ".topic") + "|:topic.")
66                                 .append(topicName).append("|").append(action).toString();
67         }
68
69         String readNamespaceFromProperties() {
70                 return AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop, NAMESPACE_PROPERTY);
71         }
72
73         private String parseNamespace(String topicName) {
74                 return topicName.substring(0, topicName.lastIndexOf('.'));
75         }
76
77 }