[ 
https://issues.apache.org/jira/browse/SHIRO-285?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13247479#comment-13247479
 ] 

Ryan Connolly commented on SHIRO-285:
-------------------------------------

Nice, Jerome. :)
Any possibility of attaching a working example project?  I am having trouble 
getting the Shiro/CAS integration working properly with the limited 
documentation available.

                
> Integration with CAS
> --------------------
>
>                 Key: SHIRO-285
>                 URL: https://issues.apache.org/jira/browse/SHIRO-285
>             Project: Shiro
>          Issue Type: New Feature
>            Reporter: Jérôme Leleu
>            Assignee: Les Hazlewood
>             Fix For: 1.2.0
>
>         Attachments: doc_shiro-cas.odt, shiro_cas.txt, shiro_cas2.txt, 
> shiro_cas3.txt
>
>
> As I wanted to test shiro with CAS, I created a CAS filter, a CAS token and a 
> CAS realm. I'm new to shiro so maybe I was mistaken on some points.
> I have a demo webapp with these files :
> index.jsp
> error.jsp
> protected/index.jsp
> The idea is to protect the /protected folder. I have this shiro.ini 
> configuration :
> [main]
> authcas = org.apache.shiro.cas.CasFilter
> authcas.failureUrl = /demo2/error.jsp
> defaultRealm = com.jle.demo2.realm.DefaultRealm
> defaultRealm.name = demo2
> defaultRealm.casServerUrlPrefix = http://localhost:11380/cas/
> defaultRealm.casService = http://localhost:11380/demo2/shiro-cas
> roles.loginUrl = 
> http://localhost:11380/cas/login?service=http://localhost:11380/demo2/shiro-cas
> [urls]
> /protected/** = roles[ROLE_USER]
> /shiro-cas = authcas
> /** = anon
> The protection on /protected/** implies to have the role ROLE_USER, if it is 
> not the case, the user is redirected to the CAS server according to the 
> property loginUrl of roles : 
> http://localhost:11380/cas/login?service=http://localhost:11380/demo2/shiro-cas.
> After authentication on CAS server, the user is redirected (CAS works like 
> this) to the service url : http://localhost:11380/demo2/shiro-cas. On this 
> url, there is the authcas filter defined as the DefaultRealm which inherits 
> from CasRealm :
> public class DefaultRealm extends CasRealm {
>     
>     @Override
>     protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection 
> principals) {
>         Set<String> roles = new HashSet<String>();
>         roles.add("ROLE_USER");
>         return new SimpleAuthorizationInfo(roles);
>     }
> }
> The DefaultRealm always grants the authenticated user the ROLE_USER role to 
> access to the /protected folder.
> The CasFilter is configured on a specific url corresponding to the CAS url 
> service : http://localhost:11380/demo2/shiro-cas, it gets the service 
> parameter in url and create a CasToken with it.
> The CasRealm uses the CasToken to authenticate the user, it gets the service 
> ticket, uses the Cas20ServiceTicketValidator (from CAS client) to call the 
> CAS server and validates the ticket granted by CAS.
> If the ticket is validated, the user is authenticated and redirected to the 
> original protected url (/protected/index.jsp). If the validation fails, the 
> user is redirected to the CAS error page (error.jsp = authcas.failureUrl).
> To add CasFilter, CasToken and CasRealm to the trunk, I created a CAS module 
> inside support.
> * CasRealm :
> I didn't find how to set the remember me to the subject : I know if the user 
> is in rememberme mode from CAS depending on a specific attribute from the 
> Assertion object but I didn't know how to pass this information to the 
> subject (there is a TODO).
> During the CAS service ticket validation, I get the object Assertion and all 
> the attributes of the user populated by CAS are in the "attributes" property 
> : I don't know what to do with these attributes.
> During the CAS service ticket validation, I choose not to throw an 
> AuthenticationException, but returns null instead : is it the good way to do ?
> * CasFilter :
> I'm not sure I respect the spirit of shiro because my filter authcas is 
> always the last one. I add on the onLoginFailure a test, if the user is 
> already authenticated, it doesn't failed but redirects to default success url.
> I didn't know how to add my authcas filter as a default filter without 
> configuring it in the shiro.ini file.
> I have no test yet.
> I join the SVN patch.
> Hope it works well for you. Don't hesitate to come back to me.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to