【问题标题】:SSO between Webapp and REST API using apache shiro使用 apache shiro 在 Webapp 和 REST API 之间进行 SSO
【发布时间】:2014-04-24 12:29:39
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 我会尝试你的建议,稍后再给你反馈。您提交的补丁是否已包含在 buji-pac4j 版本 1.2.1 中?
    • 您好,久违了。您的回答非常有帮助,但现在我在代理应用程序中获取代理票证时遇到问题。我得到以下日志INFO [org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl] - <No Proxy Ticket found for [PGTIOU-15-d4Cm3cF2StBgXXqF4dt1-cas01.example.org].>casProxyProfile.getProxyTicketFor(serviceName) 返回null。有什么想法吗?
    • 很难说,您介意在 Shiro 邮件列表上进行讨论吗?
    • 我已经打开了以下讨论 [shiro-user.582556.n2.nabble.com/…]
    【解决方案2】:

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

    OAuth configuration

    Securing REST

    OAuth and REST

    【讨论】:

      猜你喜欢
      • 2013-03-13
      • 2017-09-04
      • 2012-08-13
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 2016-04-14
      • 1970-01-01
      相关资源
      最近更新 更多