{"id":1387,"date":"2009-12-08T11:57:34","date_gmt":"2009-12-08T16:57:34","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=1387"},"modified":"2009-12-08T11:57:34","modified_gmt":"2009-12-08T16:57:34","slug":"setup-jboss-login-modules","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=1387","title":{"rendered":"Setup JBoss Login Modules"},"content":{"rendered":"<span id=\"UsersRolesLoginModule\"><h2>UsersRolesLoginModule<\/h2><\/span>\n<span id=\"Create_users.properties_file\"><h3>Create users.properties file<\/h3><\/span>\n<p>* cd <JBOSS_HOME>\/server\/myserver\/conf\/props<br \/>\n* vi my-users.properties<\/p>\n<pre>\r\nuser1=user1pass\r\nuser2=user2pass\r\n<\/pre>\n<p>* chmod g-r my-users.properties<\/p>\n<span id=\"Create_roles.properties_file\"><h3>Create roles.properties file<\/h3><\/span>\n<p>* cd <JBOSS_HOME>\/server\/myserver\/conf\/props<br \/>\n* vi my-roles.properties<\/p>\n<pre>\r\nuser1=admin\r\nuser2=payroll\r\n<\/pre>\n<p>* chmod g-r my-users.properties<\/p>\n<span id=\"Setup_login-config.xml\"><h3>Setup login-config.xml<\/h3><\/span>\n<p>* cd <JBOSS_HOME>\/server\/myserver\/conf<br \/>\n* Add to login-config.xml<\/p>\n<pre lang=\"xml\">\r\n<application-policy name=\"my\">\r\n  <authentication>\r\n    <login-module\r\n      code=\"org.jboss.security.auth.spi.UsersRolesLoginModule\"\r\n      flag=\"required\">\r\n      <module-option name=\"usersProperties\">\r\n        props\/my-users.properties\r\n      <\/module-option>\r\n      <module-option name=\"rolesProperties\">\r\n        props\/my-roles.properties\r\n      <\/module-option>\r\n    <\/login-module>\r\n  <\/authentication>\r\n<\/application-policy>\r\n<\/pre>\n<span id=\"LdapExtLoginModule\"><h2>LdapExtLoginModule<\/h2><\/span>\n<span id=\"Setup_login-config.xml_1\"><h3>Setup login-config.xml<\/h3><\/span>\n<p>* cd <JBOSS_HOME>\/server\/myserver\/conf<br \/>\n* Add to login-config.xml<\/p>\n<pre lang=\"xml\">\r\n<application-policy name=\"my\">\r\n  <authentication>\r\n    <login-module code=\"org.jboss.security.auth.spi.LdapExtLoginModule\" flag=\"required\" > \r\n      <module-option name=\"java.naming.provider.url\">ldap:\/\/ad.my.com:389<\/module-option>\r\n      <module-option name=\"bindDN\">user1<\/module-option>\r\n      <module-option name=\"bindCredential\">password<\/module-option>\r\n      <module-option name=\"baseCtxDN\">CN=Users,DC=my,DC=com<\/module-option>\r\n      <module-option name=\"baseFilter\">(sAMAccountName={0})<\/module-option>\r\n      <module-option name=\"rolesCtxDN\">CN=Users,DC=my,DC=com<\/module-option>\r\n      <module-option name=\"roleFilter\">(member={1})<\/module-option>\r\n      <module-option name=\"roleAttributeID\">cn<\/module-option>\r\n      <module-option name=\"roleAttributeIsDN\">false<\/module-option>\r\n      <module-option name=\"roleRecursion\">2<\/module-option>\r\n      <module-option name=\"searchScope\">ONELEVEL_SCOPE<\/module-option>\r\n      <module-option name=\"allowEmptyPasswords\">false<\/module-option>\r\n    <\/login-module>\r\n  <\/authentication>\r\n<\/application-policy>\r\n<\/pre>\n<span id=\"LdapExtLoginModule_with_Secure_LDAP\"><h2>LdapExtLoginModule with Secure LDAP<\/h2><\/span>\n<span id=\"Create_trust_store\"><h3>Create trust store<\/h3><\/span>\n<pre>\r\nkeytool -import -v -keystore mytruststore -alias ad-root -storepass changeit -file ad-root.cer\r\nkeytool -import -v -keystore mytruststore -alias ad-box -storepass changeit -file ad-box.cer\r\n<\/pre>\n<span id=\"Setup_JBoss_to_use_trust_store\"><h3>Setup JBoss to use trust store<\/h3><\/span>\n<span id=\"Use_properties-service.xml\"><h4>Use properties-service.xml<\/h4><\/span>\n<p>* cd <JBOSS_HOME>\/server\/myserver\/deploy<br \/>\n* edit properties-service.xml<\/p>\n<pre lang=\"xml\">\r\n<mbean code=\"org.jboss.varia.property.SystemPropertiesService\" \r\n name=\"jboss:type=Service,name=SystemProperties\">\r\n  <attribute name=\"Properties\">\r\n    javax.net.ssl.trustStore=\/absolute\/path\/to\/mytruststore\r\n    javax.net.ssl.trustStorePassword=changeit\r\n  <\/attribute>\r\n<\/mbean>\r\n<\/pre>\n<span id=\"Use_run.conf\"><h4>Use run.conf<\/h4><\/span>\n<p>* cd <JBOSS_HOME>\/bin<br \/>\n* Add to run.conf<\/p>\n<pre lang=\"xml\">\r\n# Set trust store file location\r\nJAVA_OPTS=\"$JAVA_OPTS -Djavax.net.ssl.trustStore=\/absolute\/path\/to\/mytruststore\"\r\n\r\n# Set trust store password\r\nJAVA_OPTS=\"$JAVA_OPTS -Djavax.net.ssl.trustStorePassword=changeit\"\r\n\r\n# Turn off host verification if needed. Turn off in production.\r\n#JAVA_OPTS=\"$JAVA_OPTS -Dorg.jboss.security.ignoreHttpsHost=true\"\r\n\r\n# Turn on ssl handshake debugging if needed. Turn off in production.\r\n#JAVA_OPTS=\"$JAVA_OPTS -Djavax.net.debug=ssl,handshake\"\r\n<\/pre>\n<span id=\"Setup_login-config.xml_2\"><h3>Setup login-config.xml<\/h3><\/span>\n<p>* cd <JBOSS_HOME>\/server\/myserver\/conf<br \/>\n* Add to login-config.xml<\/p>\n<pre lang=\"xml\">\r\n<application-policy name=\"my\">\r\n  <authentication>\r\n    <login-module code=\"org.jboss.security.auth.spi.LdapExtLoginModule\" flag=\"required\" > \r\n      <module-option name=\"password-stacking\">useFirstPass<\/module-option>\r\n      <module-option name=\"java.naming.provider.url\">ldaps:\/\/ad.my.com:636<\/module-option>\r\n      <module-option name=\"bindDN\">user1<\/module-option>\r\n      <module-option name=\"bindCredential\">password<\/module-option>\r\n      <module-option name=\"baseCtxDN\">CN=Users,DC=my,DC=com<\/module-option>\r\n      <module-option name=\"baseFilter\">(sAMAccountName={0})<\/module-option>\r\n      <module-option name=\"rolesCtxDN\">CN=Users,DC=my,DC=com<\/module-option>\r\n      <module-option name=\"roleFilter\">(member={1})<\/module-option>\r\n      <module-option name=\"roleAttributeID\">cn<\/module-option>\r\n      <module-option name=\"roleAttributeIsDN\">false<\/module-option>\r\n      <module-option name=\"roleRecursion\">2<\/module-option>\r\n      <module-option name=\"searchScope\">ONELEVEL_SCOPE<\/module-option>\r\n      <module-option name=\"allowEmptyPasswords\">false<\/module-option>\r\n    <\/login-module>\r\n  <\/authentication>\r\n<\/application-policy>\r\n<\/pre>\n<span id=\"Stacking_Multiple_Login_Modules\"><h2>Stacking Multiple Login Modules<\/h2><\/span>\n<p>* Add to login-config.xml<\/p>\n<pre lang=\"xml\">\r\n<application-policy name=\"my\">\r\n  <authentication>\r\n    <login-module\r\n      code=\"org.jboss.security.auth.spi.UsersRolesLoginModule\"\r\n      flag=\"required\">\r\n      <module-option name=\"password-stacking\">useFirstPass<\/module-option>\r\n      <module-option name=\"usersProperties\">\r\n        props\/my-users.properties\r\n      <\/module-option>\r\n      <module-option name=\"rolesProperties\">\r\n        props\/my-roles.properties\r\n      <\/module-option>\r\n    <\/login-module>\r\n    <login-module code=\"org.jboss.security.auth.spi.LdapExtLoginModule\" flag=\"optional\" > \r\n      <module-option name=\"password-stacking\">useFirstPass<\/module-option>\r\n      <module-option name=\"java.naming.provider.url\">ldaps:\/\/ad.my.com:636<\/module-option>\r\n      <module-option name=\"bindDN\">user1<\/module-option>\r\n      <module-option name=\"bindCredential\">password<\/module-option>\r\n      <module-option name=\"baseCtxDN\">CN=Users,DC=my,DC=com<\/module-option>\r\n      <module-option name=\"baseFilter\">(sAMAccountName={0})<\/module-option>\r\n      <module-option name=\"rolesCtxDN\">CN=Users,DC=my,DC=com<\/module-option>\r\n      <module-option name=\"roleFilter\">(member={1})<\/module-option>\r\n      <module-option name=\"roleAttributeID\">cn<\/module-option>\r\n      <module-option name=\"roleAttributeIsDN\">false<\/module-option>\r\n      <module-option name=\"roleRecursion\">2<\/module-option>\r\n      <module-option name=\"searchScope\">ONELEVEL_SCOPE<\/module-option>\r\n      <module-option name=\"allowEmptyPasswords\">false<\/module-option>\r\n    <\/login-module>\r\n  <\/authentication>\r\n<\/application-policy>\r\n<\/pre>\n<span id=\"Use_Login_Modules_in_Web_Applications\"><h2>Use Login Modules in Web Applications<\/h2><\/span>\n<p>See <a href=\"?p=813\">this post<\/a> for an example of using UsersRolesLoginModule to secure jmx-console and web-console.<\/p>\n<span id=\"References\"><h2>References<\/h2><\/span>\n<p><a href=\"http:\/\/www.jboss.org\/community\/wiki\/LdapLoginModule\">LdapLoginModule<\/a><br \/>\n<a href=\"http:\/\/www.jboss.org\/community\/wiki\/LdapExtLoginModule\">LdapExtLoginModule<\/a><br \/>\n<a href=\"http:\/\/www.samaxes.com\/2007\/05\/jboss-stacking-login-modules\/\">Stacking Login Modules<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>UsersRolesLoginModule Create users.properties file * cd \/server\/myserver\/conf\/props * vi my-users.properties user1=user1pass user2=user2pass * chmod g-r my-users.properties Create roles.properties file * cd \/server\/myserver\/conf\/props * vi my-roles.properties user1=admin user2=payroll * chmod g-r my-users.properties Setup login-config.xml * cd \/server\/myserver\/conf * Add to login-config.xml &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=1387\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[30],"tags":[],"class_list":["post-1387","post","type-post","status-publish","format-standard","hentry","category-jboss"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-mn","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1387"}],"version-history":[{"count":1,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1387\/revisions"}],"predecessor-version":[{"id":1388,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1387\/revisions\/1388"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}