<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration xmlns:xi="http://www.w3.org/2001/XInclude">


	<!--  The following property is used to select appropriate XASecure Authorizer Module (filebased, policymanager based) -->
	<property>
		<name>knox.authorization.verifier.classname</name>
		<value>com.xasecure.pdp.knox.XASecureAuthorizer</value>
		<description>
			Class Name of the authorization Module 
		</description>
	</property>


	<!-- The following properties are used only when PolicyManager is used as 
		main storage for all policy -->
	<property>
		<name>xasecure.knox.policymgr.url</name>
		<value>http://policymanagerhost:port/service/assets/dev-knox</value>
		<description>
			Location where XASecure Role Based Authorization Info is
			located.
		</description>
	</property>
	<property>
		<name>xasecure.knox.policymgr.url.saveAsFile</name>
		<value>/tmp/xasecure-knox-policy.json</value>
		<description>
			Location where XASecure Role Based Authorization Info is
			saved after successful retrieval from policymanager
		</description>
	</property>
	<property>
		<name>xasecure.knox.policymgr.url.laststoredfile</name>
		<value>/home/knox/last_xasecure-knox-policy.json</value>
		<description>
			Location and file where last XASecure Role Based Authorization Info
		    is saved after successful retrieval from policymanager.
		</description>
	</property>
	<property>
		<name>xasecure.knox.policymgr.url.reloadIntervalInMillis</name>
		<value>30000</value>
		<description>
			How often do we need to verify the changes tothe
			authorization url,
			to reload to memory (reloaded only if there are
			changes)
		</description>
	</property>

</configuration>
