Hi, I try to configure a simple STS which satisfys the need of BiPRO (a standard to transfer insurance data) with Secure Conversation.
In WSDL of the STS the BiPRO defines a policy like this for username/password authentication: <wsp:Policy wsu:Id="BiPROAuthSecurityPolicy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> <wsp:ExactlyOne> <wsp:All> <sp:TransportBinding> <wsp:Policy> <sp:TransportToken> <wsp:Policy> <sp:HttpsToken RequireClientCertificate="false"/> </wsp:Policy> </sp:TransportToken> </wsp:Policy> </sp:TransportBinding> <sp:SupportingTokens> <wsp:Policy> <wsp:ExactlyOne> <wsp:All> <sp:UsernameToken wsu:Id="BiPROBasicToken"/> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> </sp:SupportingTokens> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> Then I configured the service in cxf-servlet.xml like this: ... <bean id="mySTSProviderBean" class="org.apache.cxf.ws.security.sts.provider.SecurityTokenServiceProvider"> <property name="issueSingleOperation" ref="transportIssueDelegate"/> <property name="validateOperation" ref="transportValidateDelegate"/> <property name="cancelOperation" ref="transportCancelDelegate"/> </bean> <bean id="transportIssueDelegate" class="org.apache.cxf.sts.operation.TokenIssueOperation"> <property name="tokenProviders" ref="transportTokenProviders"/> <property name="services" ref="transportService"/> <property name="stsProperties" ref="transportSTSProperties"/> <property name="tokenStore" ref="defaultTokenStore"/> <property name="returnReferences" value="false" /> </bean> <bean id="transportValidateDelegate" class="org.apache.cxf.sts.operation.TokenValidateOperation"> <property name="tokenProviders" ref="transportTokenProviders"/> <property name="tokenValidators" ref="transportTokenValidators"/> <property name="stsProperties" ref="transportSTSProperties"/> <property name="tokenStore" ref="defaultTokenStore"/> </bean> <bean id="transportCancelDelegate" class="org.apache.cxf.sts.operation.TokenCancelOperation"> <property name="tokenCancellers" ref="transportTokenCancellers"/> <property name="stsProperties" ref="transportSTSProperties"/> <property name="tokenStore" ref="defaultTokenStore"/> </bean> <util:list id="transportTokenProviders"> <ref bean="transportSCTProvider"/> </util:list> <util:list id="transportTokenValidators"> <ref bean="transportSCTValidator"/> </util:list> <util:list id="transportTokenCancellers"> <ref bean="transportSCTCanceller"/> </util:list> <bean id="transportSCTProvider" class="sts.BiPROTokenProvider"> <property name="returnEntropy" value="false" /> </bean> <bean id="transportSCTValidator" class="org.apache.cxf.sts.token.validator.SCTValidator"> </bean> <bean id="transportSCTCanceller" class="org.apache.cxf.sts.token.canceller.SCTCanceller"> </bean> <bean id="transportService" class="org.apache.cxf.sts.service.StaticService"> <property name="endpoints" ref="transportEndpoints"/> </bean> <util:list id="transportEndpoints"> <value>http://localhost:(\d)*/doubleit/services/doubleit.* </value> </util:list> <bean id="defaultTokenStore" class="org.apache.cxf.sts.cache.DefaultInMemoryTokenStore"> </bean> <bean id="encProperties" class="org.apache.cxf.sts.service.EncryptionProperties"> <property name="encryptionAlgorithm" value="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> </bean> <bean id="transportSTSProperties" class="org.apache.cxf.sts.StaticSTSProperties"> </bean> <bean id="sctInterceptor" class="org.apache.cxf.sts.interceptor.SCTInInterceptor"/> <bean id="sctOutInterceptor" class="org.apache.cxf.sts.interceptor.SCTOutInterceptor"/> <jaxws:endpoint id="CXFSTS" implementor="#mySTSProviderBean" address="/STS" wsdlLocation="/WEB-INF/wsdl/bipro/SecurityTokenService-2.5.0.1.0.wsdl" xmlns:ns1="http://www.bipro.net/namespace" serviceName="ns1:SecurityTokenService_2.5.0.1.0" endpointName="ns1:UserPasswordLogin"> <jaxws:inInterceptors> <ref bean="sctInterceptor"/> </jaxws:inInterceptors> <jaxws:outInterceptors> <ref bean="sctOutInterceptor"/> </jaxws:outInterceptors> <jaxws:outFaultInterceptors> <ref bean="sctOutInterceptor"/> </jaxws:outFaultInterceptors> <jaxws:properties> <entry key="ws-security.callback-handler" value="sts.PasswordCallbackHandler" /> <entry key="org.apache.cxf.ws.security.tokenstore.TokenStore"> <ref bean="defaultTokenStore"/> </entry> </jaxws:properties> <jaxws:features> <logging xmlns="http://cxf.apache.org/core" /> <ref bean="transformFeature" /> </jaxws:features> </jaxws:endpoint> If I try to acces the services with a request containing username and pwd I got the message "*None of the policy alternatives can be satisfied.*" The request: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust"> <soap:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:bipro="http://www.bipro.net/namespace"> <wsse:Username>alice</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-387 username-token-profile-1.0#PasswordText">clarinet</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soap:Header> <soap:Body> <wst:RequestSecurityToken xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"> <wst:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</wst:RequestType> <wst:TokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</wst:TokenType> </wst:RequestSecurityToken> <soap:Body> <soap:Envelope> What I have to configure in cxf-servlet.xml to get things working? I could not change the WSDL while this is standard BiPRO. Thanks for your response, SRog -- View this message in context: http://cxf.547215.n5.nabble.com/Username-PWD-on-STS-tp5750076.html Sent from the cxf-user mailing list archive at Nabble.com.
