<?xml version="1.0" encoding="utf-8"?>
<!--
  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.
-->
<configuration>
    <property>
        <name>topology.name</name>
        <value>topology2</value>
    </property>
    <property>
        <name>topology.gateway.provider.authentication.ShiroProvider.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>topology.gateway.provider.authentication.ShiroProvider.param.main.ldapRealm</name>
        <value>org.apache.hadoodp.gateway.shirorealm.KnoxLdapRealm</value>
    </property>
    <property>
        <name>topology.gateway.provider.authentication.ShiroProvider.param.main.ldapRealm.userDnTemplate</name>
        <value>uid={0},ou=people,dc=hadoop,dc=apache,dc=org</value>
    </property>
    <property>
        <name>topology.gateway.provider.authentication.ShiroProvider.param.main.ldapRealm.contextFactory.url</name>
        <value>ldap://localhost:33389</value>
    </property>
    <property>
        <name>topology.gateway.provider.authentication.ShiroProvider.param.main.ldapRealm.contextFactory.authenticationMechanism</name>
        <value>simple</value>
    </property>
    <property>
        <name>topology.gateway.provider.authentication.ShiroProvider.param.urls./**</name>
        <value>authcBasic</value>
    </property>
    <property>
        <name>topology.gateway.provider.identity-assertion.Pseudo.enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>topology.gateway.provider.identity-assertion.Pseudo.param.name</name>
        <value>user.name</value>
    </property>
    <property>
        <name>topology.gateway.provider.identity-assertion.Pseudo.param.principal.mapping</name>
        <value>hdfs=lmccay;kminder=admin</value>
    </property>
    <property>
        <name>topology.service.WEBHDFS..url</name>
        <value>http://localhost:50070/webhdfs</value>
    </property>
    <property>
        <name>topology.service.WEBHCAT..url</name>
        <value>http://localhost:50111/templeton</value>
    </property>
    <property>
        <name>topology.service.OOZIE..url</name>
        <value>http://localhost:11000/oozie</value>
    </property>
    <property>
        <name>topology.service.WEBHBASE..url</name>
        <value>http://localhost:60080</value>
    </property>
    <property>
        <name>topology.service.HIVE..url</name>
        <value>http://localhost:10000</value>
    </property>
</configuration>
