我在启用SSL / TLS的tomcat Web服务器上部署了三个jsf Web应用程序。现在,我想构建具有特定角色的某种SSO身份验证。在tomcat conf / server.xml中,有一行:
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
[所以我想到了tomcat可能有他自己的SSO实现。有谁知道在哪里可以找到有关此示例代码或示例代码的更多信息?
提前感谢
经过大量的研究,我找到了解决方案,因此如果有人需要在Tomcat中进行SSO身份验证,我将在此处发布该解决方案。首先在tomcat安装目录中打开conf / server.xml文件,并添加以下行:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
</Host>
通过这样做,您已经打开了SSO阀。接下来,您需要在tomcat中设置角色。这可以通过编辑conf / tomcat-users.xml来完成。滚动到底部并添加角色,如下所示:
<role rolename="CUSTOMER"/>
<role rolename="ADMIN"/>
现在,如果要使用纯文本身份验证,还可以通过添加:]添加用户。
<user username="admin" password="admin" roles="ADMIN"/> <user username="customer" password="customer" roles="CUSTOMER"/>
或者,如果您有数据库,则可以在conf / server.xml中设置与数据库服务器的连接,我正在使用MySQL:
有关更多信息:https://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#JDBCRealm<Realm className="org.apache.catalina.realm.JDBCRealm" driverName="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/databaseName?user=serverUsername&password=serverPassword" userTable="usersTable" userNameCol="usernameColumnName" userCredCol="passwordColumnName" userRoleTable="roleTable" roleNameCol="roleColumnName"/>
注意:您需要在tomcat lib目录中提供连接驱动程序。
最后在您的一个或多个Web应用中,找到web.xml并添加安全约束:
<security-constraint> <web-resource-collection> <web-resource-name>Protected Context</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> <auth-constraint> <role-name>ADMIN</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>this is ignored currently</realm-name> </login-config> <security-role> <role-name>ADMIN</role-name> </security-role>
注意:如果您具有自定义的登录页面,则可以编辑
<login-config>
标记并更改为以下内容:
<login-config> <auth-method>FORM</auth-method> <realm-name>file</realm-name> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config>
干杯。