tomcat - 使用 JOSSO+TOMCAT 配置示例 webcontext

标签 tomcat josso

JOSSO 新手。我已经用 tomcat 设置了 JOSSO,并且 partnerapp 似乎工作正常。我有一个“示例”网络应用程序,我正在尝试使用 JOSSO 配置它。当我尝试访问 Web 应用程序时,JOSSO 登录页面正确显示,但是在我成功登录后,我得到以下异常

java.lang.RuntimeException: Outbound relaying failed. No Principal found. Verify your SSO Agent Configuration!
    org.josso.tc60.agent.SSOAgentValve.invoke(SSOAgentValve.java:551)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:722)

我已将 partner-app 条目添加到 josso-agent-config.xml。

<agent:partner-app id="MySampleApp" context="/sample"/>

我的 web.xml 看起来像这样

...
    <welcome-file-list id="WelcomeFileList">
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

    <security-constraint>
        <!-- Sample Security Constraint -->
        <web-resource-collection>

            <!-- We're going to protect this resource and make it available only to users in "role1". -->
            <web-resource-name>protected-resources</web-resource-name>

            <url-pattern>/*</url-pattern>

            <http-method>HEAD</http-method>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
            <http-method>PUT</http-method>
            <http-method>DELETE</http-method>

        </web-resource-collection>

        <!-- NOTE: This role names will be retrieved by Josso using the proper identity store. -->
        <auth-constraint>
            <role-name>role1</role-name>
        </auth-constraint>

        <user-data-constraint>
            <transport-guarantee>NONE</transport-guarantee>
        </user-data-constraint>

    </security-constraint>  

    <security-role >
        <description>Role 1</description>
        <role-name>role1</role-name>
    </security-role>

    <login-config>

        <auth-method>FORM</auth-method>

        <form-login-config>
            <!--
            NOTE: This will redirect the user to the proper login page provided by JOSSO.
            -->
            <form-login-page>/login-redirect.jsp</form-login-page>
            <form-error-page>/login-redirect.jsp</form-error-page>


        </form-login-config>

    </login-config>
...

在 c:\tomcat_dir\conf\Catlina\localhost 中创建了一个 sample.xml 文件,如下所示

<Context docBase="${catalina.home}/webapps/sample" privileged="true" antiResourceLocking="true" antiJARLocking="true">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Context>

如有任何对此问题的反馈,我们将不胜感激。

交叉发布于 JOSSO forum

最佳答案

您应该在 tomcat 初始化时指定 jaas.conf 文件,方法是在 VM Arguments 上添加以下参数(如果您使用的是 Eclipse):

-Djava.security.auth.login.config=D:\apache-tomcat-7.0.54-josso\conf\jaas.conf

这个文件,应该有以下内容:

josso {
  org.josso.tc70.agent.jaas.SSOGatewayLoginModule required debug=true;
};

我正在使用由 Eclipse IDE 管理的 Tomcat,因此我在服务器配置(查看服务器)/打开启动配置/参数/VM 参数中包含了上述配置。 但是,如果您正在配置独立的 tomcat 安装,请浏览 %TOMCAT_HOME$/bin/scripts e 并检查 tomcat 使用的是哪个 jaas.conf 并使用上面显示的内容更新它。 我希望它对你有用!

关于tomcat - 使用 JOSSO+TOMCAT 配置示例 webcontext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8937828/

相关文章:

maven - 找不到 Artifact 并且无法解析依赖关系

java - 在 Spring 3 中禁用架构验证

grails - 两个grails应用程序均使用springSecurity,一次登录即可访问两者

java - JSF 应用程序的 Websphere 单点登录

security - 集中授权服务?

spring-boot - 将外部第三方属性文件与 Spring Boot Fat Jar 一起使用

java - 即使安装成功,Dspace 也不显示页面

java - 如何获取我的 WSDL 的 URL?

debugging - 使用 Tomcat Maven 插件在 IntelliJ IDEA 中调试 JSP