Hi Senduran,

Can we try the following:

Export the primary key of the IS:

keytool -export -keystore wso2carbon.jks -alias wso2carbon -file wso2.cert

Then import the certificate to the tenant's key store

(Home > Configure > KeyStores > Import Certificates To)


Thank You,
Sameera


On Tue, Jan 20, 2015 at 6:43 AM, Senduran Balasubramaniyam <
sendu...@wso2.com> wrote:

> Hi,
>
> I debugged the org.wso2.store.sso.common.util.Util
> (product-es/modules/components/sso-common). Also I attached
> xmltooling-1.3.1-sources.jar and xmlsec-1.5.5-sources.jar to get the
> complete executing code.
>
> I compared the signingCert  variable (in the
> org.wso2.store.sso.common.util.X509CredentialImpl) when I log in as a
> tenant
> If I log in to ES's management console the subject of the certificate is 
> *CN=localhost,
> O=WSO2, L=Mountain View, ST=CA, C=US*
> but when I log in to the publisher as the same tenant the subject of the
> certificate is *C=None, O="None L=None", OU=None, CN=istenant.com
> <http://istenant.com>*
>
> Please note that in the above both scenarios I am logging as a Tenant and
> when I try to log in to publisher the signature is trying to validate
> against the tenant specific certificate,
> Is this causing the  "org.opensaml.xml.validation.ValidationException:
> Signature did not validate against the credential's key" exception ?
>
> Thanks
> Senduran
>
> On Mon, Jan 19, 2015 at 11:31 PM, Senduran Balasubramaniyam <
> sendu...@wso2.com> wrote:
>
>> Hi,
>>
>> Thanks Malithi for the response.
>> I tried, un-checking the Enable Response Signing , but even when I login
>> as admin I got the following exception
>> java.lang.NullPointerException
>> at
>> org.opensaml.xml.signature.SignatureValidator.buildSignature(SignatureValidator.java:91)
>> at
>> org.opensaml.xml.signature.SignatureValidator.validate(SignatureValidator.java:55)
>> at org.wso2.store.sso.common.util.Util.validateSignature(Util.java:290)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>         .....
>> What I am missing here ?
>>
>>
>> @ES Team, could you please help me on how to import the public
>> certificate of a tenant to the publisher's key store. Where can I find the
>> tenant's public certificate
>>
>> Thank you
>> Senduran
>>
>>
>>
>> On Mon, Jan 19, 2015 at 8:10 PM, Malithi Edirisinghe <malit...@wso2.com>
>> wrote:
>>
>>> Hii Senduran,
>>>
>>> There's a separate primary keystore generated for the tenant. Since you
>>> have enabled response signing also, the service provider that you have
>>> registered should know the public key of the IdP in order to validate.
>>> Hence, the service provider should have the public key of the IdP in
>>> it's keystore and validate the signature acquiring the respective alias. So
>>> in this case I think that you should import the public cert of the
>>> respective tenant to your publisher's keystore.
>>>
>>> Thanks,
>>> Malithi.
>>>
>>> On Mon, Jan 19, 2015 at 12:35 PM, Senduran Balasubramaniyam <
>>> sendu...@wso2.com> wrote:
>>>
>>>> Hi,
>>>>
>>>> I am experiencing $subject, with ES 2.0.0 M5. Following are the changes
>>>> I made to configure SSO.
>>>>
>>>>    - Shared registry and user database between ES and IS
>>>>    - In ES's user-mgt.xml, pointed the "UserStoreManager" to IS's
>>>>    embedded LDAP
>>>>    - Modified as following in publisher, store json
>>>>
>>>> "identityProviderURL": "https://localhost:<IS-Port>/samlsso"
>>>>
>>>>
>>>>    - Created a Service provider for publisher and store in IS as
>>>>    follows
>>>>
>>>>  SP for publisher
>>>>
>>>> Issuer: publisher
>>>>
>>>> Assertion Consumer URL: https://localhost:<ES-Port>/publisher/acs
>>>>
>>>> Use fully qualified username in the NameID
>>>>
>>>> Enable Response Signing
>>>>
>>>> Enable Assertion Signing
>>>>
>>>> Enable Single Logout
>>>>
>>>>
>>>> SP for store
>>>>
>>>> Issuer: store
>>>>
>>>> Assertion Consumer URL: https://localhost:<ES-Port>/store/acs
>>>>
>>>> Use fully qualified username in the NameID
>>>>
>>>> Enable Response Signing
>>>>
>>>> Enable Assertion Signing
>>>>
>>>> Enable Single Logout
>>>>
>>>>
>>>> When admin login the publisher behaviors as expected. (i.e page is
>>>> redirected to IS login and redirected to publisher, if already a sso
>>>> session is available directly goes to  publisher)\
>>>> But when I log in  as a tenant, the browser is redirected to
>>>> https://localhost:9443/publisher/acs and following exception is shown
>>>> in the console
>>>>
>>>>  INFO {JAGGERY.controllers.login:jag} -  Login URL:
>>>> https://localhost:9447/samlsso
>>>> org.opensaml.xml.validation.ValidationException: Signature did not
>>>> validate against the credential's key
>>>> at
>>>> org.opensaml.xml.signature.SignatureValidator.validate(SignatureValidator.java:78)
>>>> at org.wso2.store.sso.common.util.Util.validateSignature(Util.java:290)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>>> at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
>>>> at
>>>> org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225)
>>>> at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52)
>>>> at
>>>> org.jaggeryjs.rhino.<sso>.scripts.c0._c_anonymous_3(<sso>/scripts/sso.client.js:50)
>>>> at
>>>> org.jaggeryjs.rhino.<sso>.scripts.c0.call(<sso>/scripts/sso.client.js)
>>>> at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)
>>>> at
>>>> org.jaggeryjs.rhino.publisher.controllers.c1._c_anonymous_1(/publisher/controllers/acs.jag:48)
>>>> at
>>>> org.jaggeryjs.rhino.publisher.controllers.c1.call(/publisher/controllers/acs.jag)
>>>> at org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:23)
>>>> at
>>>> org.jaggeryjs.rhino.publisher.controllers.c1._c_script_0(/publisher/controllers/acs.jag:20)
>>>> at
>>>> org.jaggeryjs.rhino.publisher.controllers.c1.call(/publisher/controllers/acs.jag)
>>>> at
>>>> org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
>>>> at
>>>> org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
>>>> at
>>>> org.jaggeryjs.rhino.publisher.controllers.c1.call(/publisher/controllers/acs.jag)
>>>> at
>>>> org.jaggeryjs.rhino.publisher.controllers.c1.exec(/publisher/controllers/acs.jag)
>>>> at
>>>> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:567)
>>>> at
>>>> org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:273)
>>>> at
>>>> org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:559)
>>>> at
>>>> org.jaggeryjs.jaggery.core.JaggeryServlet.doPost(JaggeryServlet.java:29)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>>> at
>>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
>>>> at
>>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)
>>>> at
>>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:378)
>>>> at
>>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
>>>> at
>>>> org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:21)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>>> at
>>>> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>>> at
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
>>>> at
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
>>>> at
>>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
>>>> at
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
>>>> at
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
>>>> at
>>>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:183)
>>>> at
>>>> org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
>>>> at
>>>> org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:56)
>>>> at
>>>> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
>>>> at
>>>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:146)
>>>> at
>>>> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159)
>>>> at
>>>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
>>>> at
>>>> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
>>>> at
>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
>>>> at
>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
>>>> at
>>>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
>>>> at
>>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
>>>> at
>>>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1721)
>>>> at
>>>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1679)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>> at java.lang.Thread.run(Thread.java:745)
>>>>
>>>> (My ES runs on default port and IS runs on port offset 4)
>>>>
>>>> Could you please help me to resolve this issue
>>>>
>>>> Thank you
>>>> Senduran
>>>>
>>>> --
>>>> *Senduran *
>>>> Software Engineer,
>>>> WSO2, Inc.;  http://wso2.com/ <http://wso2.com/>
>>>> Mobile: +94 77 952 6548
>>>>
>>>> _______________________________________________
>>>> Dev mailing list
>>>> Dev@wso2.org
>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>
>>>>
>>>
>>>
>>> --
>>>
>>> *Malithi Edirisinghe*
>>> Senior Software Engineer
>>> WSO2 Inc.
>>>
>>> Mobile : +94 (0) 718176807
>>> malit...@wso2.com
>>>
>>
>>
>>
>> --
>> *Senduran *
>> Software Engineer,
>> WSO2, Inc.;  http://wso2.com/ <http://wso2.com/>
>> Mobile: +94 77 952 6548
>>
>
>
>
> --
> *Senduran *
> Software Engineer,
> WSO2, Inc.;  http://wso2.com/ <http://wso2.com/>
> Mobile: +94 77 952 6548
>



-- 
Sameera Medagammaddegedara
Software Engineer

Contact:
Email: samee...@wso2.com
Mobile: + 94 077 255 3005
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to