2

OSGiApache Karaf にデプロイされたバンドルがあります。BASIC認証を使用してユーザーの資格情報を確認しています。ここに私の設定Springファイルがあります:

<beans...>
...
    <bean id="loginService" class="org.eclipse.jetty.plus.jaas.JAASLoginService">
        <property name="name" value="karaf"/>
        <property name="loginModuleName" value="karaf"/>
        <property name="roleClassNames">
            <list>
                <value>org.apache.karaf.jaas.modules.RolePrincipal</value>
            </list>
        </property>
    </bean>

    <bean id="identityService" class="org.eclipse.jetty.security.DefaultIdentityService"/>

    <bean id="constraint" class="org.eclipse.jetty.http.security.Constraint">
        <property name="name" value="BASIC"/>
        <property name="roles" value="admin"/>
        <property name="authenticate" value="true"/>
    </bean>

    <bean id="constraintMapping" class="org.eclipse.jetty.security.ConstraintMapping">
        <property name="constraint" ref="constraint"/>
        <property name="pathSpec" value="/*"/>
    </bean>

    <bean id="securityHandler" class="org.eclipse.jetty.security.ConstraintSecurityHandler">
        <property name="authenticator">
            <bean class="org.eclipse.jetty.security.authentication.BasicAuthenticator"/>
        </property>
        <property name="constraintMappings">
            <list>
                <ref bean="constraintMapping"/>
            </list>
        </property>
        <property name="loginService" ref="loginService"/>
        <property name="strict" value="false"/>
        <property name="identityService" ref="identityService"/>
    </bean>

    <camelContext trace="true" xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="jetty:http://0.0.0.0:8282/services?handlers=securityHandler&amp;matchOnUriPrefix=true"/>
            <transform>
                <constant>&lt;html>&lt;body>Hello from Fuse ESB server&lt;/body>&lt;/html></constant>
            </transform>
        </route>
    </camelContext>
    ....
</beans>

この URL を入力するhttp://localhost:8282/servicesと、ブラウザに基本認証ウィンドウが表示され、ユーザー名とパスワードが要求されます。ここまではOKです。

ユーザーの認証情報はuser.propertiesofApache Karaf &{base.dir}/etc/ディレクトリに設定されています。そこから、オーセンティケーターはユーザー資格情報を取得してチェックします。

私の問題は、データベースからの資格情報を使用するために、オーセンティケーターを何らかの方法でオーバーライドする必要があることです。どこから始めればよいかわからないため、これを機能させるためにまだ何も試していません。私はインターネットを検索しようとしましたが、これを機能させる方法や、どこから始めればよいかについての手がかりがありません。したがって、誰かがこれを行う方法について正しい方向に向けることができれば、それは非常にありがたいです.

4

2 に答える 2

3

独自のユーザー ストアから引き出す必要がある場合は、独自の IdentityService と LoginService を提供し、上記の例でそれらを置き換える必要があります。

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java

これは、プロパティ タイプ ファイルからユーザーをロードし、ハッシュマップに格納するログイン サービスの例です。

提供された LoginService と IdentityService を使用するため、既存の BasicAuthenticator を使用しても問題ない可能性があります...これらをオーバーライドして置き換えれば、問題なく使用できます。

spnego オプションを含む、上記のハッシュの例からディレクトリまでの例がいくつかあります。

于 2012-08-21T10:15:01.793 に答える
0

Spring を使用しているようですので、Spring Security モジュールを使用して webapp にセキュリティを提供することを検討してください。

セキュリティhttp://static.springsource.org/spring-security/site/docs/3.1.x/reference/core-services.html#d0e2875JdbcDaoImplのために UserDetailsS​​ervice を提供するために接続できるもの さえあります

于 2012-08-21T12:56:39.907 に答える