[ 
https://issues.apache.org/jira/browse/CXF-3522?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Colm O hEigeartaigh reassigned CXF-3522:
----------------------------------------

    Assignee: Colm O hEigeartaigh

> Enhance CXF security context with claims information
> ----------------------------------------------------
>
>                 Key: CXF-3522
>                 URL: https://issues.apache.org/jira/browse/CXF-3522
>             Project: CXF
>          Issue Type: New Feature
>          Components: WS-* Components
>            Reporter: Oliver Wulff
>            Assignee: Colm O hEigeartaigh
>            Priority: Major
>
> Discussion around this feature started in the following thread:
> http://cxf.547215.n5.nabble.com/CXF-and-spring-security-td4368266.html
> The CXF SecurityContext provides the following two methods only:
> getUserPrincipal()
> isUserInRole()
> If the received security token is a SAML token further data (claims) can be 
> in the token which might be relevant for authorization to implement the 
> PEP/PDP in the application.
> WS-Trust has the following definition of a claim:
> A claim is a statement made about a client, service or other resource 
> The following OASIS specification defines the URI for some claims like 
> lastname, email, country, etc. (chapter 7.5):
> http://docs.oasis-open.org/imi/identity/v1.0/os/identity-1.0-spec-os.pdf
> We could introduce a ClaimSecurityContext interface which extends the current 
> SecurityContext and introduces a new method like:
> List<Claim> getClaims()
> A Claim consists of the following properties:
> ClaimType: URI (see spec mentioned above)
> Value: String / Object
> Additionally we can implement a ClaimsTranformer interface which depends on 
> the security token type and creates an object which implements 
> ClaimSecurityContext (similar design approach as for the validator 
> implementation in WSS4J).
> We could provide out-of-the-box implementation for SAML 1.1 and 2.0 which 
> parse the AttributeStatement and create the list of Claims object:
> <AttributeStatement><Attribute 
> Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname";><AttributeValue>John</AttributeValue></Attribute><Attribute
>  
> Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname";><AttributeValue>Doe</AttributeValue></Attribute><Attribute
>  
> Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/dateofbirth";><AttributeValue>5/5/1955</AttributeValue></Attribute><Attribute
>  
> Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/homephone";><AttributeValue>555-555-5555</AttributeValue></Attribute><Attribute
>  
> Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress";><AttributeValue>john@...</AttributeValue></Attribute></AttributeStatement>
> In addition to that, the SamlClaimsTransformer can provide a property to 
> define the URI how the role information is identified in the 
> AttributeStatement. There is no standard claims URI for roles. Each STS uses 
> a different URI. For instance, Microsoft ADFS uses the following URI:
> http://schemas.microsoft.com/ws/2008/06/identity/claims/role
> This would allow an application to use RBAC when they use ADFS and CXF 
> out-of-the-box by using the isUserInRole of the WebServiceContext.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to