﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Tomahawk-文章分类-其他</title><link>http://www.blogjava.net/dreamland/category/25231.html</link><description>有条不紊、循序渐进、关注细节、规范流程</description><language>zh-cn</language><lastBuildDate>Sat, 25 Aug 2007 21:03:25 GMT</lastBuildDate><pubDate>Sat, 25 Aug 2007 21:03:25 GMT</pubDate><ttl>60</ttl><item><title>TOMCAT中配置JNDIRealm实现用户认证</title><link>http://www.blogjava.net/dreamland/articles/139210.html</link><dc:creator>Tomahawk</dc:creator><author>Tomahawk</author><pubDate>Fri, 24 Aug 2007 23:41:00 GMT</pubDate><guid>http://www.blogjava.net/dreamland/articles/139210.html</guid><wfw:comment>http://www.blogjava.net/dreamland/comments/139210.html</wfw:comment><comments>http://www.blogjava.net/dreamland/articles/139210.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dreamland/comments/commentRss/139210.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dreamland/services/trackbacks/139210.html</trackback:ping><description><![CDATA[<p>&nbsp; </p>
<h1>1&nbsp; 集成环境</h1>
<h2><a name=_Toc175544704>1.1&nbsp; 软件环境</a></h2>
<p>Windowxp</p>
<p>JDK<st1:chsdate Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False" w:st="on">1.5.0</st1:chsdate>_10</p>
<p>apache-tomcat-<st1:chsdate Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False" w:st="on">6.0.10</st1:chsdate></p>
<p>openldap-<st1:chsdate Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False" w:st="on">2.2.29</st1:chsdate></p>
<p>&nbsp;</p>
<h1>2&nbsp;&nbsp; 集成步骤</h1>
<h2>2.1&nbsp; Openldap相关配置</h2>
<p>1．&nbsp;从<a href="http://download.bergmans.us/openldap/openldap-2.2.29">http://download.bergmans.us/openldap/openldap-2.2.29</a>获取Openldap window版本系统；</p>
<p>2．&nbsp;安装Openldap系统，同时设定Openldap环境变量 OPENLDAP_HOME 为Openldap安装目录；</p>
<p>3．&nbsp;修改％OPENLDAP_HOME％\ slapd.conf配置文件，增加如下内容<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;./schema/cosine.schema<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;./schema/inetorgperson.schema<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;./schema/nis.schema</span></div>
<p>&nbsp;4．&nbsp;修改 ％OPENLDAP_HOME％\ slapd.conf中的database define 内容如下：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">database&nbsp;bdb<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>suffix&nbsp;"dc=mycompany,dc=com"<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>rootdn&nbsp;"cn=Manager,dc=mycompany,dc=com"<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>rootpw&nbsp;secret</span></div>
<p>&nbsp;5．&nbsp;在命令行模式下，启动OpenLdap</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">$&nbsp;cd&nbsp;%OPENLDAP_HOME%<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>$&nbsp;slapd.exe&nbsp;-d&nbsp;100</span></div>
<p>-d 100 说明debug的级别<br>&nbsp;6．&nbsp;执行数据导入命令，导入openldap数据，数据请参考examples.rar<br><a href="http://www.blogjava.net/Files/dreamland/examples.rar">/Files/dreamland/examples.rar</a><br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">$cd&nbsp;%OPENLDAP_HOME%<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>$&nbsp;ldapadd&nbsp;-x&nbsp;-v&nbsp;-D&nbsp;"cn=Manager,dc=mycompany,dc=com"&nbsp;-w&nbsp;secret&nbsp;-f&nbsp;examples.ldif</span></div>
<p>7．&nbsp;通过ldapsearch命令 确认数据是否导入成功</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">$cd&nbsp;%OPENLDAP_HOME%<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>$ldapsearch&nbsp;-x&nbsp;-b&nbsp;"dc=mycompany,dc=com"&nbsp;-s&nbsp;sub&nbsp;"(objectclass=*)"&nbsp;-w&nbsp;secret&nbsp;-D&nbsp;"cn=Manager,dc=mycompany,dc=com"</span></div>
<p>命令执行后，会将刚才导入的数据全部列出在控制台日志中；</p>
<p>&nbsp;</p>
<h2>2.2&nbsp; Tomcat 相关配置</h2>
<p>1、&nbsp;从http://tomcat.apache.org&nbsp;&nbsp;&nbsp; 下载 apache-tomcat-<st1:chsdate Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False" w:st="on">6.0.10</st1:chsdate>.zip；</p>
<p>2、&nbsp;安装tomcat，同时设定TOMCAT_HOME环境变量为当前tomcat的安装目录；</p>
<p>3、&nbsp;编辑%TOMCAT_HOME%\conf\server.xml文件</p>
<p>4、&nbsp;删除当前 Engine节点下的全部的Realm配置，添加如下配置</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Realm&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #ff0000">className</span><span style="COLOR: #0000ff">="org.apache.catalina.realm.JNDIRealm"</span><span style="COLOR: #ff0000">&nbsp;debug</span><span style="COLOR: #0000ff">="99"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>connectionName</span><span style="COLOR: #0000ff">="cn=Manager,dc=mycompany,dc=com"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connectionPassword</span><span style="COLOR: #0000ff">="secret"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connectionURL</span><span style="COLOR: #0000ff">=<span style="COLOR: red"><strong>ldap://127.0.0.1:389</strong></span><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #ff0000">userPattern</span><span style="COLOR: #0000ff">="uid={0},ou=people,dc=mycompany,dc=com"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userPassword</span><span style="COLOR: #0000ff">="userPassword"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;roleBase</span><span style="COLOR: #0000ff">="ou=groups,dc=mycompany,dc=com"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;roleName</span><span style="COLOR: #0000ff">="cn"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;roleSearch</span><span style="COLOR: #0000ff">="(uniqueMember={0})"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>其中红色部分的IP和端口为当前opneldap运行的IP和端口</p>
<p><br>关于Realm配置的说明，请参考tomcat相关文档</p>
<p>&nbsp;</p>
<p style="COLOR: red"><strong>注：对于已经存在的ldap Server，我们可以分析schema的定义，重新配置Realm 中的连接，userPattern，</strong></p>
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: red">roleSearch等属性，从而获取用户和角色的信息。</span></strong></p>
<p>&nbsp;</p>
<h2>2.3 配置结果验证</h2>
<p>1、&nbsp;启动openldap</p>
<p>2、&nbsp;启动tomcat</p>
<p>3、&nbsp;IE 连接&nbsp;<a href="http://127.0.0.1:8080/">http://127.0.0.1:8080</a> 访问manager应用，提示输入用户名/密码</p>
<p>4、&nbsp;输入 sanzhang/zhangsan，如果系统认证通过，说明认证配置成功</p>
<p>由于Tomcat自带的manager&nbsp;Web应用中需要有manager角色的用户才能够被认证登入，我们添加的数据中，sanzhang这个用户具有manager角色，如果配置正确，sanzhang用户可以登入manager系统</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><st1:chsdate Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False" w:st="on"></st1:chsdate></p>
<img src ="http://www.blogjava.net/dreamland/aggbug/139210.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dreamland/" target="_blank">Tomahawk</a> 2007-08-25 07:41 <a href="http://www.blogjava.net/dreamland/articles/139210.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>