Hi.
My app has now grow to contain different paths with different
authentications scheme and context, like:
/api
/console
/oauth
Then, there is the host:
<bean id="virtualHost" class="org.restlet.ext.spring.SpringHost">
<constructor-arg value="" />
<property name="attachments">
<map>
<entry key="/api">
<ref bean="apiApplication" />
</entry>
<entry key="/oauth">
<ref bean="oauthApplication" />
</entry>
<entry key="/console">
<ref bean="consoleApplication" />
</entry>
</map>
</property>
</bean>
This happened mainly because I needed to add an Http Basic authn to the API
and a Cookie authenticator on the console, while the "oauth" context
requires no authentication and the only way I found to add an authenticator
and keeping the SpringBeanRouter has been the one I wrote here
http://restlet-discuss.1400322.n2.nabble.com/How-to-signup-a-ChallengeAuthenticator-when-using-SpringBeanRouter-td5588475.html
Finally, each application has a SpringBeanRouter as inboundRouter so I can
externalize everything to a spring bean file.
So I need a different application for each "route" with a different
authentication system
That was fine but now I see some limitations:
1. /console serve some static html pages and has a cookie authentication. If
there is no cookie for the client, I redirect it to /signin that is free
from any authn. For that, I had to create a new app mounted in the host as
/signin. This is not nice
2. as alternative, I can mount it in the oauth application, that would
become the "authn free application", that keeps together resources of
different kind: signin is a HTML page, oauth is an api callback page for
oauth authentication with third party services. Probably I will split the
api and the html console in different modules in future so this makes no
sense.
Now, clearly I'm making something wrong in designing this.
Also, other issue:
3. the /console html application serve some static content like css and js.
So the application has this resources:
<bean name="/pages/{page}" class="console.HtmlResource" id="html"
scope="prototype" />
<bean name="/static/{type}/{name}" class="console.StaticResource"
id="static" scope="prototype" />
I do not like this. I do not want /pages in my URL for html pages, but I
have no choice then adding another application. Again, smell.
I think I need to add some different level to route the different part of
the resources. I'd rather have:
. one application for all those context
. a sort of first level sub-route that defines the main restlet for /api,
/console, /static and such with different authentication methods (maybe
defined via spring)
. then the SpringBeanRouter way to define the actual resources, like now,
but not mounted as the application inboundRoot.
Is there a way to achieve this?
Thanks.
--
Daniele Dellafiore
http://danieledellafiore.net
------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2730174