0

エミュレーターで WL hybird アプリケーションからログインしようとすると、以下の例外が発生します。

環境:

1) デフォルトの Liberty プロファイルと Derby データベースを使用してインストールされた Worklight Server (505 バージョン)。
2) ユーザーレジストリーが LDAP に構成されている。LDAP が稼働中です。
3) 「Module 20.1 Form-b​​ased Authentication」に従いました

Server.xml が正しく構成されている:

   ldapRegistry id="IBMDirectoryServerLDAP" realm="defaultWIMFileBasedRealm"
        host="testserver.com" port="4389" ignoreCase="true"
        baseDN="dc=ibm,dc=com"
        bindDN="cn=xyz"
        bindPassword="xyz123"
        ldapType="IBM Tivoli Directory Server" reuseConnection="true"
        idsFilters
            userFilter="(&(uid=%v)(objectclass=ePerson))"
            groupFilter="(&(cn=%v)(|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames)(objectclass=groupOfURLs)))"
            userIdMap="*:uid"
            groupIdMap="*:cn"
            groupMemberIdMap="ibm-allGroups:member;ibm-allGroups:uniqueMember;groupOfNames:member;groupOfUniqueNames:uniqueMember"
    ldapRegistry

ログイン・モジュール: com.worklight.core.auth.ext.WebSphereLoginModule
オーセンティケーター: com.worklight.core.auth.ext.WebSphereFormBasedAuthenticator

例外:

[RandomNumberGenerationServlet]: Initialization successful.
[2/13/13 15:37:21:349 IST] 00000049 com.worklight.core.auth.ext.WebSphereFormBasedAuthenticator  I FWLSE0055I: Not recognized.
[2/13/13 15:38:27:288 IST] 0000004b ication.internal.jaas.modules.UsernameAndPasswordLoginModule A CWWKS1100A: Authentication did not succeed for user ID wpsbind. An invalid user ID or password was specified.
[2/13/13 15:38:27:742 IST] 0000004f com.worklight.core.auth.ext.WebSphereFormBasedAuthenticator  I FWLSE0055I: Not recognized.
[2/13/13 15:38:27:746 IST] 0000004f com.worklight.core.auth.ext.WebSphereFormBasedAuthenticator  I FWLSE0055I: Not recognized.
[2/13/13 15:38:27:747 IST] 0000004f com.worklight.core.auth.impl.AuthenticationFilter            E FWLSE0048E: Unhandled exception caught: realm WASLTPARealm is not allowed to ignore request to a protected resouce in a non-success state
java.lang.IllegalStateException: realm WASLTPARealm is not allowed to ignore request to a protected resouce in a non-success state
    at com.worklight.core.auth.impl.AuthenticationContext.checkAuthentication(AuthenticationContext.java:515)
    at com.worklight.core.auth.impl.AuthenticationContext.processRealms(AuthenticationContext.java:396)
    at com.worklight.core.auth.impl.AuthenticationContext.pushCurrentResource(AuthenticationContext.java:373)
    at com.worklight.core.auth.impl.AuthenticationServiceBean.accessResource(AuthenticationServiceBean.java:63)
    at com.worklight.core.auth.impl.AuthenticationFilter.doFilter(AuthenticationFilter.java:162)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:940)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1037)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:81)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:930)
    at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:274)
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:529)
    at com.ibm.ws.threading.internal.Worker.executeWork(Worker.java:398)
    at com.ibm.ws.threading.internal.Worker.run(Worker.java:380)
4

1 に答える 1

0

認証は Liberty で行われます。Worklight がログインしたユーザーを認識するためには、それを知る必要があります。

ここでは、フォームベースの認証は役に立ちません。できることとすべきことは、Liberty からの応答からユーザー情報を含むカスタム HTTP ヘッダーを取得するカスタムベースのオーセンティケーターを実装することです。

カスタム・ベースの認証については、次の入門トレーニング・モジュールで詳しく読んで、最初に概念を理解してください 。 -_Custom_Authenticator_and_Login_Module.pdf

認証フローのより明確な「イメージ」については、次の図を参照してください: http://pic.dhe.ibm.com/infocenter/wrklight/v5r0m5/topic/com.ibm.worklight.help.doc/ integ/r_authentication_at_the_gateway.html

于 2013-02-13T11:49:08.820 に答える