使用apache shiro在Webapp和REST API之间进行SSO

时间:2014-03-18 16:52:40

标签: java rest single-sign-on cas shiro

我尝试在webapp和REST API之间设置SSO,为此我使用Apache Shiro + Jasig CAS,但现在我遇到了与身份验证相关的问题REST API的。 我在Webapp中使用CASRealm + CASFilter并尝试使用在那里创建的会话来访问REST API,我尝试了两种方法:

  1. 通过请求标头将CAS服务票证从webapp传播到REST API(不起作用,它表示服务票证无效,因为它属于另一个应用程序,也许TGT可以工作)

  2. 将用户名和密码存储在webapp中,并在http基本身份验证中使用它们(这可能是一个很大的安全漏洞,我试图避免它)

  3. 我可以使用哪种其他方法在REST API中对用户进行身份验证?

    我想这主要是一个架构问题。 如果您不理解我的问题(或我的英语),请提出问题

2 个答案:

答案 0 :(得分:1)

您希望使用第一个CAS服务作为REST API的代理:您可以使用CAS代理机制:https://wiki.jasig.org/display/CAS/Proxy+CAS+Walkthrough。虽然,Shiro CAS模块中没有代理支持,但您应该使用 buji-pac4j 扩展,以下是关于此主题的一个很好的讨论:http://shiro-user.582556.n2.nabble.com/Shiro-cas-proxying-td7579694.html

答案 1 :(得分:1)

您可以在CAS上启用OAuth2.0配置,然后使用oauth2.0保护您的REST服务。例如,您可以使用oauth进行用户身份验证的休息服务。这里有一些有用的链接。

OAuth configuration

Securing REST

OAuth and REST