Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ApacheShiro在Webapp和RESTAPI之间实现SSO_Java_Rest_Single Sign On_Cas_Shiro - Fatal编程技术网

Java 使用ApacheShiro在Webapp和RESTAPI之间实现SSO

Java 使用ApacheShiro在Webapp和RESTAPI之间实现SSO,java,rest,single-sign-on,cas,shiro,Java,Rest,Single Sign On,Cas,Shiro,我试图在webapp和restapi之间设置SSO,为此我使用apacheshiro+Jasig CAS,但现在我遇到了一个与restapi的身份验证相关的问题。 我在Webapp中使用CASRealm+CASFilter并尝试使用在那里创建的会话访问REST API,我尝试了两种方法: 通过请求头将CAS服务票证从webapp传播到REST API(不起作用,它说服务票证无效,因为它属于另一个应用,TGT可能会起作用) 将用户名和密码存储在webapp中,并在http基本身份验证中使用它们(这

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

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

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

  • 我还可以使用什么方法在RESTAPI中对用户进行身份验证

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

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

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


    我将尝试您的建议,稍后再给您反馈。您提交的补丁是否已经包含在buji-pac4j版本1.2.1中?您好,很抱歉久违。您的回答确实很有帮助,但现在我在代理应用程序中获取代理票证时遇到了一个问题。我得到以下日志
    INFO[org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl]
    casProxyProfile.getProxyTicketFor(serviceName)
    返回空值。有什么想法吗?很难说,你介意在Shiro邮件列表上展开讨论吗?我反对以下讨论[]