WebServiceContext.getUserPrincipal() is null for incoming SAML Token or
transformed token
-----------------------------------------------------------------------------------------
Key: CXF-3521
URL: https://issues.apache.org/jira/browse/CXF-3521
Project: CXF
Issue Type: Improvement
Components: WS-* Components
Affects Versions: 2.4
Reporter: Oliver Wulff
If my service provider receives a SAML token or a BinarySecurityToken (will be
transformed) I can't read the principle using the JAX-WS WebServiceContext.
example:
...
@Resource
WebServiceContext wsContext;
public java.math.BigInteger doubleIt(java.math.BigInteger numberToDouble) {
Principal pr = wsContext.getUserPrincipal();
...
The method getUserPrincipal() returns null.
I see two ways to fix this.
1) Pass the principal to the constructor of WSSecurityEngineResult in the
processor of WSS4J
ex.
if (assertion.isSigned()) {
result = new WSSecurityEngineResult(WSConstants.ST_SIGNED,
assertion);
} else {
result = new WSSecurityEngineResult(WSConstants.ST_UNSIGNED,
assertion);
}
similar for BinarySecurityTokenProcessor.
This allows the CXF WSS4JInInterceptor to read the principal like this:
final Principal p = (Principal)o.get(WSSecurityEngineResult.TAG_PRINCIPAL);
2) Extend the WSS4JInInterceptor to parse the SAMLToken (or the transformed if
available), read the subject and create the CXF SecurityContext.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira