wso2 身份服务器 SAML2 持票人令牌请求与居民身份提供者
wso2 identity server SAML2 bearer token request with Resident Identity Provider
我想使用 wso2is 上的常驻身份提供者作为我的身份提供者。
它适用于 SAML 2 简单功能。
当我想将 saml 断言转换为用于 REST api 调用的 saml2 承载令牌时。我得到一个 NullPointerException
Blockquote
颁发访问令牌时出错。 {org.wso2.carbon.identity.oauth2.OAuth2Service}
java.lang.NullPointerException
在 org.opensaml.security.SAMLSignatureProfileValidator.validate(SAMLSignatureProfileValidator.java:47)
在 org.wso2.carbon.identity.oauth2.token.handlers.grant.saml.SAML2BearerGrantHandler.validateGrant(SAML2BearerGrantHandler.java:386)
在 org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer.issue(AccessTokenIssuer.java:144)
在 org.wso2.carbon.identity.oauth2.OAuth2Service.issueAccessToken(OAuth2Service.java:177)
在 org.wso2.carbon.identity.oauth.endpoint.token.OAuth2TokenEndpoint.getAccessToken(OAuth2TokenEndpoint.java:233)
在 org.wso2.carbon.identity.oauth.endpoint.token.OAuth2TokenEndpoint.issueAccessToken(OAuth2TokenEndpoint.java:108)
在 sun.reflect.GeneratedMethodAccessor99.invoke(来源不明)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:601)
在 org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
在 org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
在 org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:194)
在 org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:100)
在 org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:57)
在 org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:93)
在 org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
在 org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
在 org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
在 org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
在 org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203)
在 org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
在 org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:159)
在 org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
在 org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
在 org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
在 org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178)
在 org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
在 org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:56)
在 org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
在 org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141)
在 org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156)
在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
在 org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52)
在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653)
在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
在 java.lang.Thread.run(Thread.java:722)
Blockquote
解决方案是始终为不记名令牌服务调用签署断言。
所以你必须在你的 saml SP
中启用断言加密
我想使用 wso2is 上的常驻身份提供者作为我的身份提供者。 它适用于 SAML 2 简单功能。 当我想将 saml 断言转换为用于 REST api 调用的 saml2 承载令牌时。我得到一个 NullPointerException
Blockquote
颁发访问令牌时出错。 {org.wso2.carbon.identity.oauth2.OAuth2Service} java.lang.NullPointerException 在 org.opensaml.security.SAMLSignatureProfileValidator.validate(SAMLSignatureProfileValidator.java:47) 在 org.wso2.carbon.identity.oauth2.token.handlers.grant.saml.SAML2BearerGrantHandler.validateGrant(SAML2BearerGrantHandler.java:386) 在 org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer.issue(AccessTokenIssuer.java:144) 在 org.wso2.carbon.identity.oauth2.OAuth2Service.issueAccessToken(OAuth2Service.java:177) 在 org.wso2.carbon.identity.oauth.endpoint.token.OAuth2TokenEndpoint.getAccessToken(OAuth2TokenEndpoint.java:233) 在 org.wso2.carbon.identity.oauth.endpoint.token.OAuth2TokenEndpoint.issueAccessToken(OAuth2TokenEndpoint.java:108) 在 sun.reflect.GeneratedMethodAccessor99.invoke(来源不明) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180) 在 org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) 在 org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:194) 在 org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:100) 在 org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:57) 在 org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:93) 在 org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) 在 org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) 在 org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) 在 org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223) 在 org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203) 在 org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137) 在 org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:159) 在 org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286) 在 org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:755) 在 org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在 org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178) 在 org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47) 在 org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:56) 在 org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47) 在 org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141) 在 org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 在 org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:722)
Blockquote
解决方案是始终为不记名令牌服务调用签署断言。 所以你必须在你的 saml SP
中启用断言加密