{"id":655,"date":"2007-12-17T09:54:43","date_gmt":"2007-12-17T00:54:43","guid":{"rendered":"http:\/\/www.kazu.tv\/blog\/?p=655"},"modified":"2007-12-17T09:54:43","modified_gmt":"2007-12-17T00:54:43","slug":"jbossform","status":"publish","type":"post","link":"https:\/\/kazu.tv\/blog\/2007\/12\/17\/jbossform\/","title":{"rendered":"JBoss\u3067FORM\u8a8d\u8a3c"},"content":{"rendered":"<p>\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u3067\u9762\u5012\u306a\u30b3\u30fc\u30c9\u3092\u66f8\u304b\u306a\u304f\u3066\u3082\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u3061\u3087\u3053\u3061\u3087\u3053\u3063\u3068\u66f8\u304f\u3060\u3051\u3067\u5f8c\u306fJBoss\u304c\u9762\u5012\u898b\u3066\u304f\u308c\u308b\u3002Tomcat\u3067\u3082\u51fa\u6765\u308b\u3051\u3069\uff08\u3063\u3066\u3044\u3046\u304b\u4ed6\u306e\u30b3\u30f3\u30c6\u30ca\u3067\u3082\uff1f\uff09\u3002<br \/>\n\u4ee5\u524d\u306e<a href=\"http:\/\/www.kazu.tv\/blog\/archives\/000657.html\">\u30a8\u30f3\u30c8\u30ea\u30fc<\/a>\u3067JBoss\u306e\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u7c21\u5358\u306b\u66f8\u3044\u305f\u306e\u3067\u3001\u74b0\u5883\u306b\u95a2\u3057\u3066\u306f\u305d\u3063\u3061\u3092\u53c2\u7167\u3002<br \/>\n\u4ee5\u4e0b\u3001\u5177\u4f53\u7684\u306a\u8a2d\u5b9a\u3002<\/p>\n<p><!--more--><br \/>\n\u3053\u306e<a href=\"http:\/\/d.hatena.ne.jp\/maudlin\/20060412\/p1\" target=\"_blank\">\u30b5\u30a4\u30c8<\/a>\u3092\u53c2\u8003\u306b\u3057\u305f\u3002\u4f7f\u3063\u3066\u308b\u65b9\u6cd5\u306fDIGEST\u8a8d\u8a3c\u3060\u3051\u3069\u3001\u57fa\u672c\u7684\u306a\u3084\u308a\u65b9\u306f\u9055\u308f\u306a\u3044\u3057\u5206\u304b\u308a\u3084\u3059\u3044\u30da\u30fc\u30b8\u306a\u306e\u3067\u30aa\u30b9\u30b9\u30e1\u3002\u3053\u306e<a href=\"http:\/\/www.limy.org\/program\/j2ee\/jboss_tips1.html\" target=\"_blank\">\u30da\u30fc\u30b8<\/a>\u3082\u898b\u3084\u3059\u3044\u3002<br \/>\n\u30fbweb.xml<br \/>\n\u3069\u306e\u30da\u30fc\u30b8\uff08URL\uff09\u306b\u8a8d\u8a3c\u3092\u304b\u3051\u308b\u304b\u3001\u30ed\u30b0\u30a4\u30f3\u753b\u9762\u7b49\u3092\u8a2d\u5b9a\u3002realm-name\uff08\u3053\u3053\u3067\u306ffoo\uff09\u306f\u4ed6\u306e\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u53c2\u7167\u3055\u308c\u308b\u3002<\/p>\n<div class=\"code\">&lt;login-config&gt;<br \/>\n&lt;auth-method&gt;FORM&lt;\/auth-method&gt;<br \/>\n&lt;realm-name&gt;foo&lt;\/realm-name&gt;<br \/>\n&lt;form-login-config&gt;<br \/>\n&lt;form-login-page&gt;\/common\/login_first.jsp&lt;\/form-login-page&gt;<br \/>\n&lt;form-error-page&gt;\/common\/login_error.jsp&lt;\/form-error-page&gt;<br \/>\n&lt;\/form-login-config&gt;<br \/>\n&lt;\/login-config&gt;<br \/>\n&lt;security-constraint&gt;<br \/>\n&lt;web-resource-collection&gt;<br \/>\n&lt;web-resource-name&gt;main&lt;\/web-resource-name&gt;<br \/>\n&lt;url-pattern&gt;\/servlet\/*&lt;\/url-pattern&gt;<br \/>\n&lt;url-pattern&gt;\/jsp\/*&lt;\/url-pattern&gt;<br \/>\n&lt;\/web-resource-collection&gt;<br \/>\n&lt;auth-constraint&gt;<br \/>\n&lt;role-name&gt;USER&lt;\/role-name&gt;<br \/>\n&lt;\/auth-constraint&gt;<br \/>\n&lt;user-data-constraint&gt;<br \/>\n&lt;transport-guarantee&gt;NONE&lt;\/transport-guarantee&gt;<br \/>\n&lt;\/user-data-constraint&gt;<br \/>\n&lt;\/security-constraint&gt;<br \/>\n&lt;security-role&gt;<br \/>\n&lt;role-name&gt;USER&lt;\/role-name&gt;<br \/>\n&lt;\/security-role&gt;\n<\/div>\n<p>\u30fblogin-config.xml<br \/>\n\u8a8d\u8a3c\u306e\u5177\u4f53\u7684\u306a\u8a2d\u5b9a\u5185\u5bb9\u3092\u8a18\u8ff0\u3059\u308b\u3002\u30d1\u30b9\u30ef\u30fc\u30c9\u30c1\u30a7\u30c3\u30af\u3001\u30ed\u30b0\u30a4\u30f3\u3001\u30ed\u30b0\u30a4\u30f3\u5931\u6557etc\u306e\u6642\u306b\u5b9f\u884c\u3055\u308c\u308bSQL\u3092\u8a18\u8ff0\u3059\u308b\u3002\u5f53\u7136\u30c6\u30fc\u30d6\u30eb\uff08\u3053\u306e\u4f8b\u3067\u306fuser, active_users\uff09\u306f\u4e8b\u524d\u306b\u4f5c\u6210\u3057\u3066\u304a\u304f\u3002<\/p>\n<div class=\"code\">&lt;application-policy name = &#8220;foo&#8221;&gt;<br \/>\n&lt;authentication&gt;<br \/>\n&lt;login-module code = &#8220;org.jboss.security.auth.spi.DatabaseServerLoginModule&#8221; flag = &#8220;required&#8221;&gt;<br \/>\n&lt;module-option name = &#8220;unauthenticatedIdentity&#8221;&gt;guest&lt;\/module-option&gt;<br \/>\n&lt;module-option name = &#8220;dsJndiName&#8221;&gt;java:\/fooDS&lt;\/module-option&gt;<br \/>\n&lt;module-option name = &#8220;principalsQuery&#8221;&gt;SELECT passwd FROM user WHERE user_id=?&lt;\/module-option&gt;<br \/>\n&lt;module-option name = &#8220;rolesQuery&#8221;&gt;SELECT role, &#8216;Roles&#8217; FROM user WHERE user_id=?&lt;\/module-option&gt;<br \/>\n&lt;module-option name = &#8220;setLoggedInQuery&#8221;&gt;insert into active_users (username) values (?)&lt;\/module-option&gt;<br \/>\n&lt;module-option name = &#8220;isLoggedInQuery&#8221;&gt;select * from active_users where username=?&lt;\/module-option&gt;<br \/>\n&lt;module-option name = &#8220;resetCounterQuery&#8221;&gt;update user set num_login_failure = 0 where user_id = ?&lt;\/module-option&gt;<br \/>\n&lt;module-option name = &#8220;incrementCounterQuery&#8221;&gt;update user set num_login_failure = num_login_failure + 1 where user_id = ?&lt;\/module-option&gt;<br \/>\n&lt;module-option name = &#8220;getCounterQuery&#8221;&gt;select num_login_failure + 1000*active_status from user where user_id = ?&lt;\/module-option&gt;<br \/>\n&lt;module-option name = &#8220;logQuery&#8221;&gt;insert into login_log (login, date, info) values (?,?,?)&lt;\/module-option&gt;<br \/>\n&lt;module-option name = &#8220;maxRetries&#8221;&gt;5&lt;\/module-option&gt;<br \/>\n&lt;module-option name = &#8220;hashAlgorithm&#8221;&gt;MD5&lt;\/module-option&gt;<br \/>\n&lt;module-option name = &#8220;hashUserPassword&#8221;&gt;true&lt;\/module-option&gt;<br \/>\n&lt;\/login-module&gt;<br \/>\n&lt;\/authentication&gt;<br \/>\n&lt;\/application-policy&gt;<\/div>\n<p>\u30fbjboss-web.xml<br \/>\n\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3053\u306eWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u8a8d\u8a3c\u65b9\u6cd5\u3092\u6307\u5b9a\u3059\u308b\u3002login-config.xml\u306e&lt;application-policy name=&#8221;\u3053\u308c&#8221;&gt;\u306e\u5024\u3092\u8a2d\u5b9a\u3059\u308b\u3002<\/p>\n<div class=\"code\">&lt;jboss-web&gt;<br \/>\n&lt;security-domain&gt;java:\/jaas\/foo&lt;\/security-domain&gt;<br \/>\n&lt;\/jboss-web&gt;\n<\/div>\n<p>\u30fbxxxx-ds.xml<br \/>\nlogin-config.xml\u3067\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u3092\u30c1\u30a7\u30c3\u30af\u3057\u306b\u884c\u304f\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u305f\u3051\u3069\u3001DB\u306b\u63a5\u7d9a\u3059\u308b\u70ba\u306b\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<br \/>\n\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3002<\/p>\n<div class=\"code\">&lt;datasources&gt;<br \/>\n&lt;xa-datasource&gt;<br \/>\n&lt;jndi-name&gt;fooDS&lt;\/jndi-name&gt;<br \/>\n&lt;xa-datasource-class&gt;com.informix.jdbcx.IfxXADataSource&lt;\/xa-datasource-class&gt;<br \/>\n&lt;xa-datasource-property name=&#8221;IfxIFXHOST&#8221;&gt;server1&lt;\/xa-datasource-property&gt;<br \/>\n&lt;xa-datasource-property name=&#8221;Description&#8221;&gt;db connection&lt;\/xa-datasource-property&gt;<br \/>\n&lt;xa-datasource-property name=&#8221;PortNumber&#8221;&gt;1526&lt;\/xa-datasource-property&gt;<br \/>\n&lt;xa-datasource-property name=&#8221;DatabaseName&#8221;&gt;db_name&lt;\/xa-datasource-property&gt;<br \/>\n&lt;xa-datasource-property name=&#8221;ServerName&#8221;&gt;server_name&lt;\/xa-datasource-property&gt;<br \/>\n&lt;xa-datasource-property name=&#8221;User&#8221;&gt;user&lt;\/xa-datasource-property&gt;<br \/>\n&lt;xa-datasource-property name=&#8221;Password&#8221;&gt;pass&lt;\/xa-datasource-property&gt;<br \/>\n&lt;xa-datasource-property name=&#8221;IfxIFX_XASPEC&#8221;&gt;Y&lt;\/xa-datasource-property&gt;<br \/>\n&lt;user-name&gt;user&lt;\/user-name&gt;<br \/>\n&lt;password&gt;pass&lt;\/password&gt;<br \/>\n&lt;exception-sorter-class-name&gt;org.jboss.resource.adapter.jdbc.vendor.InformixExceptionSorter&lt;\/exception-sorter-class-name&gt;<br \/>\n&lt;metadata&gt;<br \/>\n&lt;type-mapping&gt;InformixDB&lt;\/type-mapping&gt;<br \/>\n&lt;\/metadata&gt;<br \/>\n&lt;\/xa-datasource&gt;<br \/>\n&lt;\/datasources&gt;<\/div>\n<p>\u3053\u308c\u3067\u4e00\u901a\u308a\u5b8c\u4e86\u3002\u5f8c\u306fjsp\u3067\u3053\u3093\u306a\u611f\u3058\u306e\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u308c\u3070ok<\/p>\n<div class=\"code\">&lt;form action=&#8221;j_security_check&#8221; method=&#8221;post&#8221;&gt;<br \/>\nuser:&lt;input type=&#8221;text&#8221; name=&#8221;j_username&#8221;&gt;<br \/>\npass:&lt;input type=&#8221;password&#8221; name=&#8221;j_password&#8221;&gt;<br \/>\n&lt;input type=&#8221;submit&#8221; name=&#8221;submit&#8221; value=&#8221;login&#8221;&gt;<br \/>\n&lt;\/form&gt;\n<\/div>\n<p>j_security_check\u3068\u304b\u306f\u7279\u5225\u306a\u540d\u524d\u3067\u3042\u3089\u304b\u3058\u3081\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u81ea\u5206\u3067web.xml\u3068\u304b\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u306f\u306a\u3044\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JBoss\u3067FORM\u8a8d\u8a3c\u3092\u3059\u308b\u3084\u308a\u65b9\u3002\u3042\u307e\u308a\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u66f8\u304f\u5fc5\u8981\u304c\u7121\u304f\u3066\u4fbf\u5229\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[60],"tags":[219,220,953,202,221,222,223],"class_list":["post-655","post","type-post","status-publish","format-standard","hentry","category-java","tag-form","tag-j_security_check","tag-java","tag-jboss","tag-login-config-xml","tag-web-xml","tag-223"],"_links":{"self":[{"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/posts\/655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/comments?post=655"}],"version-history":[{"count":0,"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/posts\/655\/revisions"}],"wp:attachment":[{"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/media?parent=655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/categories?post=655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/tags?post=655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}