首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除Apache Karaf中不必要的登录模块

删除Apache Karaf中不必要的登录模块
EN

Stack Overflow用户
提问于 2014-11-21 23:27:35
回答 1查看 1.3K关注 0票数 1

这个问题最初被发布在了卡拉夫用户的邮件列表上,但我没有得到答案:http://karaf.922171.n3.nabble.com/Deleting-an-unnecessary-login-module-td4033321.html

我想从默认的jaas领域中删除一个登录模块(PublicKeyLoginModule)。

根据文档:http://karaf.apache.org/manual/latest/developers-guide/security-framework.html

因此,如果要覆盖Karaf中的默认安全配置(由ssh shell、web控制台和JMX层使用),则需要部署名为name="karaf“和rank=”1“的JAAS配置。

但是,当我这样做时,将添加新模块,而不是替换现有模块。

当通过部署dir或包含在包中(通过包含以下路径的蓝图使用Maven创建)加载下面的蓝图时,src\main\resources\OSGI-INF\blueprint\context.xml

我得到以下信息:

代码语言:javascript
复制
karaf@root()> jaas:realm-list
Index | Realm Name | Login Module Class Name
-----------------------------------------------------------------------------------
1     | karaf      | org.apache.karaf.jaas.modules.properties.PropertiesLoginModule
2     | karaf      | org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule
3     | karaf      | org.apache.karaf.jaas.modules.ldap.LDAPLoginModule

我想看到的是

代码语言:javascript
复制
karaf@root()> jaas:realm-list
Index | Realm Name | Login Module Class Name
-----------------------------------------------------------------------------------
1     | karaf      | org.apache.karaf.jaas.modules.ldap.LDAPLoginModule

或者,如果有一种方法可以显式删除模块:

代码语言:javascript
复制
karaf@root()> jaas:realm-list
Index | Realm Name | Login Module Class Name
-----------------------------------------------------------------------------------
1     | karaf      | org.apache.karaf.jaas.modules.properties.PropertiesLoginModule
2     | karaf      | org.apache.karaf.jaas.modules.ldap.LDAPLoginModule

这就是蓝图:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:jaas="http://karaf.apache.org/xmlns/jaas/v1.0.0"
           xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
           xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0">

    <type-converters>
        <bean class="org.apache.karaf.jaas.modules.properties.PropertiesConverter"/>
    </type-converters>

    <!-- Allow usage of System properties, especially the karaf.base property -->
    <ext:property-placeholder placeholder-prefix="$[" placeholder-suffix="]"/>

    <!-- AdminConfig property place holder for the org.apache.karaf.jaas  -->
    <cm:property-placeholder persistent-id="org.apache.karaf.jaas" update-strategy="none">
        <cm:default-properties>
            <cm:property name="example.group" value="example-group-value"/>
        </cm:default-properties>
    </cm:property-placeholder>

    <jaas:config name="karaf" rank="1">
        <jaas:module className="org.apache.karaf.jaas.modules.ldap.LDAPLoginModule" flags="required">
            connection.url = ldap://ldap.example.com:389
            user.base.dn = o= example.com
            user.filter = (uid=%u)
            user.search.subtree = true
            role.base.dn = ou=applications,l=global,o= example.com
            role.filter = (&amp;(objectClass=groupOfUniqueNames)(uniqueMember=*uid=%u*)(cn=${ example.group}))
            role.name.attribute = cn
            role.search.subtree = true
            authentication = simple
        </jaas:module>
    </jaas:config>
</blueprint>

代码语言:javascript
复制
karaf@root()> shell:info
Karaf
  Karaf version               3.0.0
  Karaf home                  ***
  Karaf base                  ***
  OSGi Framework              org.apache.felix.framework - 4.2.1

关于Karaf 3.0.1的同一期

我欢迎任何建议。创建一个全新的领域是可能的,但出于策略原因,我更希望在运行时看不到PublicKeyLoginModule。

EN

回答 1

Stack Overflow用户

发布于 2014-11-28 13:06:16

作为一种解决办法,您可以尝试如下:

默认的karaf领域是在带有蓝图的org.apache.karaf.jaas.module包中注册的。

从服务注册表中找到名为JaasRealm的原始karaf服务,并注销它;然后使用上面的蓝图注册您自己的领域。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27072093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档