2013-03-15 68 views
1

费了九牛二虎之力SAML令牌,我已经得到了一个示例控制台应用程序工作到发送到服务器身份STS的请求得到一个安全令牌点..WSO2身份服务器 - 不能得到STS

这里的例外是身份服务器报告:

[2013-03-15 14:31:04,563] ERROR {org.wso2.carbon.identity.provider.AttributeCallbackHandler} - Error occuerd while populating claim 
java.lang.NullPointerException 
     at org.wso2.carbon.identity.provider.AttributeCallbackHandler.loadClaims(AttributeCallbackHandler.java:136) 
     at org.wso2.carbon.identity.provider.AttributeCallbackHandler.handle(AttributeCallbackHandler.java:68) 
     at org.apache.rahas.impl.SAMLTokenIssuer.createAttributeAssertion(SAMLTokenIssuer.java:544) 
     at org.apache.rahas.impl.SAMLTokenIssuer.createHoKAssertion(SAMLTokenIssuer.java:419) 
     at org.apache.rahas.impl.SAMLTokenIssuer.issue(SAMLTokenIssuer.java:173) 
     at org.apache.rahas.TokenRequestDispatcher.handle(TokenRequestDispatcher.java:69) 
     at org.apache.rahas.STSMessageReceiver.invokeBusinessLogic(STSMessageReceiver.java:57) 
     at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40) 
     at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110) 
     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
     at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172) 
     at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146) 
     at org.wso2.carbon.core.transports.CarbonServlet.doPost(CarbonServlet.java:231) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
     at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90) 
     at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111) 
     at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:67) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
     at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
     at org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
     at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:172) 
     at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156) 
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
     at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
org.apache.rahas.TrustException: Error in creating a SAMLToken using Opensaml library 
     at org.apache.rahas.impl.SAMLTokenIssuer.createAttributeAssertion(SAMLTokenIssuer.java:585) 
     at org.apache.rahas.impl.SAMLTokenIssuer.createHoKAssertion(SAMLTokenIssuer.java:419) 
     at org.apache.rahas.impl.SAMLTokenIssuer.issue(SAMLTokenIssuer.java:173) 
     at org.apache.rahas.TokenRequestDispatcher.handle(TokenRequestDispatcher.java:69) 
     at org.apache.rahas.STSMessageReceiver.invokeBusinessLogic(STSMessageReceiver.java:57) 
     at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40) 
     at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110) 
     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
     at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172) 
     at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146) 
     at org.wso2.carbon.core.transports.CarbonServlet.doPost(CarbonServlet.java:231) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
     at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90) 
     at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111) 
     at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:67) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
     at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
     at org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
     at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:172) 
     at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156) 
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
     at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
Caused by: org.opensaml.MalformedException: AttributeStatement is invalid, requires at least one attribute 
     at org.opensaml.SAMLAttributeStatement.checkValidity(Unknown Source) 
     at org.opensaml.SAMLObject.toDOM(Unknown Source) 
     at org.opensaml.SAMLSubjectStatement.toDOM(Unknown Source) 
     at org.opensaml.SAMLAttributeStatement.toDOM(Unknown Source) 
     at org.opensaml.SAMLAssertion.toDOM(Unknown Source) 
     at org.opensaml.SAMLObject.toDOM(Unknown Source) 
     at org.opensaml.SAMLSignedObject.toDOM(Unknown Source) 
     at org.opensaml.SAMLObject.toDOM(Unknown Source) 
     at org.opensaml.SAMLSignedObject.sign(Unknown Source) 
     at org.opensaml.SAMLSignedObject.sign(Unknown Source) 
     at org.apache.rahas.impl.SAMLTokenIssuer.createAttributeAssertion(SAMLTokenIssuer.java:581) 
     ... 39 more 

从所有的文件,我已经按照所有的固定STS服务和正确配置的步骤。似乎有些东西没有配置知道要发回哪些声明。

客户端代码是从身份服务器文档4.1.0版本的“Security Token Server

谁能帮助?

+0

我觉得有什么问题你正在使用的客户端应用程序。发送给STS的请求可能没有说明需要哪些索赔(即缺少索赔要素)。是否可以附加客户端代码? – drox 2013-03-31 13:33:24

+0

添加了我正在使用的客户端代码的链接。 – Adam 2013-04-02 01:12:48

回答

1

的问题是,你得送至少1个要求,我sugest做这样:

private static OMElement getRSTTemplate() throws Exception { 
     OMFactory fac = OMAbstractFactory.getOMFactory(); 
     OMElement elem = fac.createOMElement(Constants.RST_TEMPLATE); 
     TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_02, elem) 
       .setText(XML.SAML_NS); 
     TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_02, elem, 
       RahasConstants.KEY_TYPE_SYMM_KEY); 
     TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_02, elem, 256); 
     TrustUtil.createClaims(RahasConstants.VERSION_05_02, elem,"http://wso2.org"); 
     addClaimType(elem,"http://wso2.org/claims/givenname"); 
     return elem; 
     } 

     private static void addClaimType(OMElement parent,String uri) { 
     OMElement element = null; 
     element = parent.getOMFactory().createOMElement(new QName("http://schemas.xmlsoap.org/ws/2005/05/identity", "ClaimType", "wsid"), 
         parent); 
     element.addAttribute(parent.getOMFactory().createOMAttribute("Uri",null,uri)); 
     } 
相关问题