<!--
/**
 * Copyright (c) Codice Foundation
 *
 * This is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either
 * version 3 of the License, or any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details. A copy of the GNU Lesser General Public License is distributed along with this program and can be found at
 * <http://www.gnu.org/licenses/lgpl.html>.
 *
 **/
 -->
<features xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          name="security-2.30.0"
          xmlns="http://karaf.apache.org/xmlns/features/v1.3.0"
          xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">

    <repository>mvn:org.apache.karaf.features/spring/4.4.10/xml/features</repository>
    <repository>mvn:org.apache.cxf.karaf/apache-cxf/3.6.10/xml/features</repository>
    <repository>mvn:ddf.features/kernel/2.30.0/xml/features</repository>
    <repository>mvn:ddf.features/utilities/2.30.0/xml/features</repository>
    <repository>mvn:ddf.features/branding/2.30.0/xml/features</repository>
    <repository>mvn:ddf.features/camel-karaf/2.30.0/xml/features</repository>

    <feature name="security-core-api-dependencies" version="2.30.0"
             description="Dependencies for the core security APIs.">
        <!-- Third Party Features -->
        <feature prerequisite="true">wrap</feature>
        <feature>pax-web-http-whiteboard</feature>
        <feature>pax-web-jetty-websockets</feature>
        <feature>scr</feature>
        <feature version="6.1.21_1">spring</feature>

        <!-- External DDF Features -->
        <feature version="2.30.0">jackson</feature>
        <feature>wss4j</feature>
        <feature>cxf-ws-security</feature>
        <feature>cxf-jaxrs</feature>
        <feature>cxf-bindings-soap</feature>
        <feature>cxf-features-logging</feature>
        <feature>common-system</feature>

        <!-- NimbusDS -->
        <bundle>wrap:mvn:com.nimbusds/nimbus-jose-jwt/10.8</bundle>
        <bundle>wrap:mvn:com.nimbusds/oauth2-oidc-sdk/11.33</bundle>
        <bundle>mvn:com.nimbusds/content-type/2.3</bundle>
        <bundle>mvn:com.nimbusds/lang-tag/1.7</bundle>

        <!-- MiniDev -->
        <bundle>mvn:net.minidev/accessors-smart/2.5.2</bundle>
        <bundle>mvn:net.minidev/json-smart/2.5.2</bundle>

        <!-- Miscellaneous -->
        <bundle dependency="true">mvn:org.apache.shiro/shiro-core/1.13.0</bundle>
        <bundle>mvn:com.sun.mail/jakarta.mail/1.6.7</bundle>
        <bundle>mvn:org.apache.commons/commons-text/1.15.0</bundle>

        <!--
            net.minidev/accessors-smart/1.2 uses asm v5.x. Need this resolved before we can upgrade:
            https://bitbucket.org/connect2id/nimbus-jose-jwt/issues/239/switch-to-other-json-library
        -->
        <bundle>mvn:org.ow2.asm/asm/5.2</bundle>
        <bundle>wrap:mvn:com.github.stephenc.jcip/jcip-annotations/1.0-1</bundle>
        <bundle>mvn:ddf.platform.security/security-oidc-bundle/2.30.0</bundle>
    </feature>

    <feature name="security-core-api" version="2.30.0"
             description="Core security APIs.">
        <feature>security-core-api-dependencies</feature>

        <!-- Core -->
        <bundle>mvn:ddf.security.core/security-core-api/2.30.0</bundle>

        <!-- Country Converter -->
        <bundle>mvn:ddf.platform.country/platform-country-converter-api/2.30.0</bundle>

        <!-- Rest Client -->
        <bundle>mvn:ddf.platform.security/security-rest-clientapi/2.30.0</bundle>

        <!-- Filters -->
        <bundle>mvn:ddf.platform/http-filter-api/2.30.0</bundle>
        <bundle>mvn:ddf.platform/security-filter-api/2.30.0</bundle>

        <!-- Handlers -->
        <bundle>mvn:ddf.security.handler/security-handler-api/2.30.0</bundle>

        <!-- Policy -->
        <bundle>mvn:ddf.security.policy/security-policy-api/2.30.0</bundle>

        <!-- Encryption -->
        <bundle>mvn:ddf.security.encryption/security-encryption-api/2.30.0</bundle>

        <!-- Expansion -->
        <bundle>mvn:ddf.security.expansion/security-expansion-api/2.30.0</bundle>

        <!-- Token Storage -->
        <bundle>mvn:ddf.security.storage/token-storage-api/2.30.0</bundle>

        <!-- Sessions -->
        <bundle>mvn:ddf.platform.security/session-management-api/2.30.0</bundle>
        <bundle>mvn:ddf.platform/platform-session-invalidator-api/2.30.0</bundle>

        <!-- Logout -->
        <bundle>mvn:ddf.security.servlet/security-servlet-logout-api/2.30.0</bundle>

        <!-- Email -->
        <bundle>mvn:ddf.platform.email/platform-email-api/2.30.0</bundle>

        <!-- Miscellaneous -->
        <bundle>mvn:ddf.security.servlet/security-servlet-web-socket-api/2.30.0</bundle>
    </feature>

    <feature name="security-core-impl-dependencies" version="2.30.0"
             description="Dependencies for core security implementations.">
        <!-- External DDF Features -->
        <feature>javax-validation</feature>
        <feature>parser-xml</feature>
        <feature>platform-util</feature>
    </feature>

    <feature name="security-core-impl" version="2.30.0"
             description="Core security implementations.">
        <feature>security-core-api</feature>
        <feature>security-core-impl-dependencies</feature>

        <!-- Core -->
        <bundle>mvn:ddf.security.core/security-core-impl/2.30.0</bundle>

        <!-- Handlers -->
        <bundle>mvn:ddf.security.handler/security-handler-impl/2.30.0</bundle>

        <!-- Expansion -->
        <bundle>mvn:ddf.security.expansion/security-expansion-impl/2.30.0</bundle>

        <!-- Policy Extension Point -->
        <bundle>mvn:ddf.security.pep/security-pep-interceptor/2.30.0</bundle>

        <!-- Miscellaneous -->
        <bundle dependency="true">mvn:ddf.platform.security/log-sanitizer/2.30.0</bundle>
        <bundle>mvn:ddf.security.interceptor/security-interceptor-guest-wrapper/2.30.0</bundle>
    </feature>

    <feature name="security-core-services-dependencies" version="2.30.0"
             description="Dependencies for core security services.">
        <!-- Third Party Features -->
        <feature version="6.1.21_1">spring</feature>
        <feature>war</feature>
        <feature>pax-web-jetty</feature>
        <feature>pax-web-http-jetty</feature>

        <!-- External DDF Features -->
        <feature>apache-commons</feature>
        <feature>guava</feature>
        <feature>cxf-core</feature>
        <feature>cxf-rt-security</feature>
        <feature>cxf-ws-policy</feature>
        <feature>cxf-frontend-javascript</feature>
        <feature>cxf-rs-security-oauth2</feature>
        <feature>cxf-rs-security-xml</feature>
        <bundle start-level="40" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-cache-api/1.1.1_1</bundle>
        <bundle start-level="40">mvn:org.apache.cxf/cxf-rt-rs-security-sso-saml/3.6.10</bundle>
        <feature>action-core-impl</feature>
        <feature>error-api</feature>
        <feature>util-uuidgenerator</feature>

        <!-- JavaX -->
        <bundle>mvn:javax.el/javax.el-api/3.0.0</bundle>
        <bundle>mvn:javax.servlet/javax.servlet-api/4.0.1</bundle>

        <!-- Apache -->
        <bundle>mvn:org.apache.commons/commons-lang3/3.20.0</bundle>
        <bundle dependency="true">mvn:org.apache.commons/commons-configuration2/2.10.1</bundle>
        <bundle>mvn:org.apache.commons/commons-jexl/2.1.1</bundle>
        <bundle>
            mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxen/1.1.6_1
        </bundle>
        <bundle>mvn:org.apache.santuario/xmlsec/2.3.1</bundle>
        <bundle start-level="30">mvn:org.apache.neethi/neethi/3.2.1</bundle>

        <!-- Pax -->
        <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-jsp/8.0.34</bundle>

        <!-- Miscellaneous -->
        <bundle>mvn:com.google.code.gson/gson/2.13.2</bundle>
        <bundle>mvn:dev.failsafe/failsafe/3.2.4</bundle>
        <bundle>mvn:joda-time/joda-time/2.10.11</bundle>
        <bundle>mvn:org.codice.thirdparty/commons-httpclient/3.1.0_1</bundle>
    </feature>

    <feature name="security-core-services" version="2.30.0"
             description="Core security services.">
        <feature>security-core-impl</feature>
        <feature>security-core-services-dependencies</feature>

        <!-- Core -->
        <bundle>mvn:ddf.security.core/security-core-services/2.30.0</bundle>

        <!-- Rest Client -->
        <bundle>mvn:ddf.platform.security/security-rest-cxfwrapper/2.30.0</bundle>

        <!-- Country Converter -->
        <bundle>mvn:ddf.platform.country/platform-country-converter-local/2.30.0</bundle>

        <!-- Filters -->
        <bundle>mvn:ddf.security.filter/security-filter-csrf/2.30.0</bundle>
        <bundle>mvn:ddf.security.filter/security-filter-web-sso/2.30.0</bundle>
        <bundle>mvn:ddf.security.filter/security-filter-login/2.30.0</bundle>
        <bundle>mvn:ddf.security.filter/security-filter-authorization/2.30.0</bundle>

        <!-- Claims -->
        <bundle>mvn:ddf.security.claims/security-claims-property/2.30.0</bundle>
        <bundle>mvn:ddf.security.claims/security-claims-attributequery/2.30.0</bundle>
        <bundle>mvn:ddf.security.claims/security-claims-certificate/2.30.0</bundle>

        <!-- Keys and Certificates -->
        <bundle>mvn:ddf.security.certificate/security-certificate-keystoreeditor/2.30.0</bundle>
        <bundle>mvn:ddf.security.certificate/security-certificate-generator/2.30.0</bundle>
        <bundle>mvn:ddf.security.certificate/security-crl-generator/2.30.0</bundle>
        <bundle>mvn:ddf.security.certificate/security-ocsp-checker/2.30.0</bundle>

        <!-- Encryption -->
        <bundle>mvn:ddf.security.encryption/security-encryption-impl/2.30.0</bundle>
        <bundle>mvn:ddf.security.encryption/security-encryption-commands/2.30.0</bundle>

        <!-- Token Storage -->
        <bundle>mvn:ddf.security.storage/token-storage-impl/2.30.0</bundle>

        <!-- Sessions -->
        <bundle>mvn:ddf.platform.security/session-management-impl/2.30.0</bundle>
        <bundle>mvn:ddf.security.servlet/security-servlet-session-expiry/2.30.0</bundle>
        <bundle>mvn:ddf.security.command/security-command-sessionmanager/2.30.0</bundle>

        <!-- Expansion -->
        <bundle>mvn:ddf.security.expansion/security-expansion-userattr-map/2.30.0</bundle>
        <bundle>mvn:ddf.security.expansion/security-expansion-metacardattr-map/2.30.0</bundle>
        <bundle>mvn:ddf.security.expansion/security-expansion-commands/2.30.0</bundle>

        <!-- Logout -->
        <bundle>mvn:ddf.security.servlet/security-servlet-logout/2.30.0</bundle>
        <bundle>mvn:ddf.security.servlet/security-servlet-default-logout/2.30.0</bundle>
        <bundle>mvn:ddf.security.servlet/security-servlet-logout-endpoint/2.30.0</bundle>

        <!-- Policy Decision Point -->
        <configfile finalname="${ddf.etc}/ddf.security.pdp.realm.AuthzRealm.config">
            mvn:ddf.security.pdp/security-pdp-authzrealm/2.30.0/config/default-authzrealm
        </configfile>
        <bundle>mvn:ddf.security.pdp/security-pdp-authzrealm/2.30.0</bundle>

        <!-- Context Policy -->
        <bundle>mvn:ddf.security.policy/security-policy-context/2.30.0</bundle>

        <!-- Logging -->
        <bundle>mvn:ddf.security.interceptor/security-interceptor-logger/2.30.0</bundle>

        <!-- Guest Authentication -->
        <bundle>mvn:ddf.security.realm/security-realm-guest/2.30.0</bundle>
        <bundle>mvn:ddf.security.interceptor/security-interceptor-guest/2.30.0</bundle>

        <!-- Basic Auth -->
        <bundle>mvn:ddf.security.realm/security-realm-userpass/2.30.0</bundle>
        <bundle>mvn:ddf.security.handler/security-handler-basic/2.30.0</bundle>

        <!-- PKI Auth -->
        <bundle>mvn:ddf.security.realm/security-realm-pki/2.30.0</bundle>
        <bundle>mvn:ddf.security.handler/security-handler-pki/2.30.0</bundle>

        <!-- Email -->
        <bundle>mvn:ddf.platform.email/platform-email-impl/2.30.0</bundle>

        <!-- Miscellaneous -->
        <bundle>mvn:ddf.platform/platform-paxweb-jettyconfig/2.30.0</bundle>
        <bundle>mvn:ddf.platform.security/secure-boot/2.30.0</bundle>
        <bundle>mvn:ddf.security.command/security-command-listener/2.30.0</bundle>
        <bundle>mvn:ddf.security.servlet/security-servlet-whoami/2.30.0</bundle>
    </feature>

    <feature name="oidc-auth" version="2.30.0"
             description="OIDC features and bundles.">
        <feature>security-core-services</feature>

        <bundle>mvn:ddf.security.realm/security-realm-oidc/2.30.0</bundle>
        <bundle>mvn:ddf.security.handler/security-handler-oidc/2.30.0</bundle>
        <bundle>mvn:ddf.security.handler/security-handler-oauth/2.30.0</bundle>
    </feature>

    <feature name="saml-auth" version="2.30.0"
             description="SAML features and bundles.">
        <feature>security-core-services</feature>

        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.opensaml/3.4.5_2</bundle>

        <bundle>mvn:ddf.security/security-saml-util/2.30.0</bundle>

        <bundle>mvn:ddf.security.saml/saml-assertion-validator/2.30.0</bundle>
        <bundle>mvn:ddf.security.saml/saml-assertion-validator-impl/2.30.0</bundle>

        <bundle>mvn:ddf.security.realm/security-realm-saml/2.30.0</bundle>
        <bundle>mvn:ddf.security.handler/security-handler-saml/2.30.0</bundle>
    </feature>

    <feature name="ldap-auth" version="2.30.0"
             description="LDAP features and bundles.">
        <feature>security-core-services</feature>

        <bundle>wrap:mvn:org.springframework.ldap/spring-ldap-core/2.3.2.RELEASE</bundle>
        <bundle>mvn:ddf.security.jaas/security-jaas-ldap/2.30.0</bundle>
        <bundle>mvn:org.apache.commons/commons-pool2/2.5.0</bundle>

        <configfile finalname="${ddf.etc}/ws-security/attributeMap.properties">
            mvn:ddf.security.claims/security-claims-ldap/2.30.0/properties/attributeMap
        </configfile>
        <bundle>mvn:ddf.security.claims/security-claims-ldap/2.30.0</bundle>
    </feature>

    <feature name="embedded-ldap" version="2.30.0"
            description="Embedded LDAP for integration testing.">
        <configfile
                finalname="${ddf.etc}/Claims_Handler_Manager-ddf.security.sts.claimsHandler.ClaimsHandlerManager.config"
                override="false">
            mvn:ddf.security.claims/security-claims-ldap/2.30.0/config/default-ldap-claimshandler
        </configfile>
        <configfile
                finalname="${ddf.etc}/Ldap_Login_Config-ddf.ldap.ldaplogin.LdapLoginConfig.config"
                override="false">
            mvn:ddf.security.jaas/security-jaas-ldap/2.30.0/config/default-ldaplogin
        </configfile>
    </feature>

    <feature name="security-all" version="2.30.0"
             description="All DDF security features">
        <feature>security-core-services</feature>
        <feature>oidc-auth</feature>
        <feature>saml-auth</feature>
        <feature>ldap-auth</feature>
        <feature>embedded-ldap</feature>
    </feature>
</features>
