Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Apache Shiro credentials based security for Rest service

I'm creating a App using Shiro as the security framework. The app have two parts; Web and Rest.

The Web is using Shiro's default FormAuthenticationFilter. I'm happy with the session based approach.

The stand alone app which is using Rest, I want to limit from using the FormAuthenticationFilter and from creating a session, which I'm able to do via shiro.ini file

I need to implement credentials based security on the rest service.

Browsing on the web I saw some blogs suggesting that you create your own Realm and filter to handle this scenario. But no details on how to do this.

Is it possible to implement credentials based security on Apache Shiro? If so is there a blog or tutorial that shows you how to achieve this?

Regards

like image 950
Rentius2407 Avatar asked Oct 20 '22 12:10

Rentius2407


1 Answers

You could use basic auth for your webservice endpoints and form based authentication for the web.

Do web users also have access to your webservice?

EDIT:

Checkout this sample app. https://github.com/dominicfarr/skybird-shiro

It has three url paths configured in shiro.

web - uses form authentication.

api - uses basic authentication.

jersey - anonymous access.

Cutting to the shiro.ini config.

[main]
authc.loginUrl = /web/login.html

sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO

securityManager.sessionManager = $sessionManager
securityManager.sessionManager.sessionDAO = $sessionDAO


[users]
dom = password, user

[roles]
user = standard

[urls]
/web/login.html = authc
/web/** = authc
/api/** = authcBasic
/jersey/message = anon
like image 116
dom farr Avatar answered Oct 29 '22 20:10

dom farr