随笔 - 175  文章 - 202  trackbacks - 0
<2010年1月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

第一个Blog,记录哈哈的生活

常用链接

留言簿(16)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

Java links

搜索

  •  

最新评论

阅读排行榜

评论排行榜

接着上一个的jira 4.0.1 war 方式的安装过程,使用mysql,把jira的login加上crowd,为之后增加confluence和svn的sso做准备

第一步先把jira的认证改成使用crowd,接着上次安装完jira的tomcat,继续安装

1. 准备mysql
  a)创建一个库create database crowd character set utf8;
  b)在my.ini中增加一行
  [mysqld]
  transaction-isolation = READ-COMMITTED
2. 准备tomcat
  a)修改$catalina_home\conf\server.xml,增加useBodyEncodingForURI="true",如下:
  <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true"/>
  b)下载javamail api,放到$catalina_home\lib目录下
3. 准备crowd
  a)下载atlassian-crowd-2.0.3-war.zip,并解压到$crowd_home
  b)修改$crowd_home\WEB-INF\classes\crowd-init.properties,增加配置crowd.home=$crowd_home($crowd_home替换成实际目录)
  c)创建crowd.xml,内容为<Context path="/crowd" docBase="$crowd_home" reloadable="false"/>($crowd_home替换成实际目录),将这个文件放到$catalina_home\conf\Catalina\localhost目录下
  d)启动tomcat,进入crowd,如:http://localhost:8080/crowd
  e)到applications中add application,类型选jira,name: jira, password: haha, url: http://localhost:8080/jira, ip最好手工填, directories选一个需要的,Allow all users to authenticate我选上了,成功
  f)import jira users在users里面选import users,import 的时候注意把dbname修改为jiradb就可以了。
4. 准备jira
  a)修改$jira_home\WEB-INF\classes\crowd.properties,如
  application.name                        jira
  application.password                    haha
  application.login.url                   http://hostname/jira/
  crowd.server.url                        http://hostname/crowd/services/
  ...
  其它的不需要修改
  b)修改$jira_home\WEB-INF\classes\osuser.xml,内容如下:

<!-- This is where JIRA's credentials checking can be configured.  For instance, see
http://www.atlassian.com/software/jira/docs/latest/ldap.html 
-->
<opensymphony-user>

    
<authenticator class="com.opensymphony.user.authenticator.SmartAuthenticator" />

<!-- CROWD:START
    You will need to uncomment the Crowd providers below to enable Crowd integration
    and comment out the default providers that are located further down in this file.
-->
    
<provider class="com.atlassian.crowd.integration.osuser.CrowdCredentialsProvider"/>
    
<provider class="com.atlassian.crowd.integration.osuser.CrowdAccessProvider"/>
    
<provider class="com.atlassian.crowd.integration.osuser.DelegatingProfileProvider">
        
<property name="provider-1">com.atlassian.crowd.integration.osuser.CrowdProfileProvider</property>
        
<property name="provider-2">com.atlassian.jira.user.ExternalEntityJiraProfileProvider</property>
        
<property name="provider-2-exclusive-access">true</property>
    
</provider>
<!-- CROWD:END -->

<!-- CROWD:START  - The providers below here will need to be commented out for Crowd integration -->
<!--
    <provider class="com.atlassian.core.ofbiz.osuser.CoreOFBizCredentialsProvider">
        <property name="exclusive-access">true</property>
    </provider>

    <provider class="com.atlassian.jira.user.osuser.JiraOFBizProfileProvider">
        <property name="exclusive-access">true</property>
    </provider>

    <provider class="com.atlassian.jira.user.osuser.JiraOFBizAccessProvider">
        <property name="exclusive-access">true</property>
    </provider>
-->
<!-- CROWD:END -->

</opensymphony-user>

  c)修改$jira_home\WEB-INF\classes\seraph-config.xml,内容如下:

<security-config>
    
<parameters>
        
<init-param>
            
<!--
              The login URL to redirect to when the user tries to access a protected resource (rather than clicking on
              an explicit login link). Most of the time, this will be the same value as 'link.login.url'.
                - if the URL is absolute (contains '://'), then redirect that URL (for SSO applications)
                - else the context path will be prepended to this URL

                If '${originalurl}' is present in the URL, it will be replaced with the URL that the user requested.
                This gives SSO login pages the chance to redirect to the original page
            
-->
            
<param-name>login.url</param-name>
            
<param-value>/login.jsp?os_destination=${originalurl}</param-value>
            
<!--<param-value>http://sso.mycompany.com/login?redirectTo=${originalurl}</param-value>-->
        
</init-param>
        
<init-param>
            
<!--
              the URL to redirect to when the user explicitly clicks on a login link (rather than being redirected after
              trying to access a protected resource). Most of the time, this will be the same value as 'login.url'.
                - same properties as login.url above
            
-->
            
<param-name>link.login.url</param-name>
            
<param-value>/login.jsp?os_destination=${originalurl}</param-value>
            
<!--<param-value>/secure/Dashboard.jspa?os_destination=${originalurl}</param-value>-->
            
<!--<param-value>http://sso.mycompany.com/login?redirectTo=${originalurl}</param-value>-->
        
</init-param>
        
<init-param>
            
<!-- URL for logging out.
                 - If relative, Seraph just redirects to this URL, which is responsible for calling Authenticator.logout().
                 - If absolute (eg. SSO applications), Seraph calls Authenticator.logout() and redirects to the URL
                 
-->
            
<param-name>logout.url</param-name>
            
<param-value>/secure/Logout!default.jspa</param-value>
            
<!--<param-value>http://sso.mycompany.com/logout</param-value>-->
        
</init-param>
        
<!-- The key that the original URL is stored with in the session -->
        
<init-param>
            
<param-name>original.url.key</param-name>
            
<param-value>os_security_originalurl</param-value>
        
</init-param>
        
<init-param>
            
<param-name>login.cookie.key</param-name>
            
<param-value>seraph.os.cookie</param-value>
        
</init-param>
        
<!-- This property controls how your cookie is encrypted.  If you truly want to secure your cookies, you need
            to change this to a secure password 
-->
        
<init-param>
            
<param-name>cookie.encoding</param-name>
            
<param-value>jiracookie</param-value>
        
</init-param>
        
<!-- This property sets the default cookie timeout in seconds.  It is currently set to 1 year -->
        
<init-param>
            
<param-name>autologin.cookie.age</param-name>
            
<param-value>31536000</param-value>
        
</init-param>
        
<!-- Basic Authentication can be enabled by passing the authentication type as a configurable url parameter.
        With this example, you will need to pass http://mycompany.com/anypage?os_authType=basic in the url to enable Basic Authentication 
-->
        
<init-param>
            
<param-name>authentication.type</param-name>
            
<param-value>os_authType</param-value>
        
</init-param>
        
<!--  If this parameter is set to true, the cookie will never be set secure.  This is useful if you're logging
              into JIRA via https, but want to browse JIRA over http.  This flag will ensure that the remember me option
              works correctly.
        <init-param>
            <param-name>insecure.cookie</param-name>
            <param-value>true</param-value>
        </init-param> 
-->
    
</parameters>

    
<rolemapper class="com.atlassian.jira.security.JiraRoleMapper"/>

    
<!-- CROWD:START - If enabling Crowd SSO integration uncomment the following JIRAAuthenticator and comment out the DefaultAuthenticator below -->
    
<authenticator class="com.atlassian.crowd.integration.seraph.JIRAAuthenticator"/>
    
<!-- CROWD:END -->

    
<!-- CROWD:START - The authenticator below here will need to be commented out for Crowd SSO integration -->
    
<!--
    <authenticator class="com.atlassian.jira.security.login.JiraOsUserAuthenticator"/>
    
-->
    
<!-- CROWD:END -->

    
<!-- NB: the URL to redirect to is now specified by login.url above -->
    
<services>
        
<service class="com.atlassian.seraph.service.PathService">
            
<init-param>
                
<param-name>config.file</param-name>
                
<param-value>/seraph-paths.xml</param-value>
            
</init-param>
        
</service>

        
<service class="com.atlassian.seraph.service.WebworkService">
            
<init-param>
                
<param-name>action.extension</param-name>
                
<param-value>jspa</param-value>
            
</init-param>
        
</service>
    
</services>

    
<interceptors>
        
<interceptor class="com.atlassian.jira.portal.PortalPageInterceptor"/>
        
<interceptor class="com.atlassian.jira.user.preferences.UserPreferencesResetInterceptor"/>
    
</interceptors>
</security-config>

  d)重启tomcat

一切搞定,可以使用crowd的用户登录jira了,而且只要在一边登录,两边就都登录了。


另外把遇到的问题写一下
1. 在crowd中import jira users的时候,将connection url改正确了之后,就是把dbname改成jiradb,依然无法连接,后来发现是crowd没有mysql jdbc驱动,停掉crowd,将mysql jdbc驱动放到crowd WEB-INF\lib目录,重试就可以了。
2. 所有的都配置好了之后,到jira里面仍然无法登录,通过查看crowd log,发现有这句话[crowd.service.soap.SOAPService] Client host is invalid: 10.40.155.43 / 10.40.155.43,明白了,因为在crowd里面add application的时候,使用的是自动得到IP,得到的是127.0.0.1。解决这个问题的办法就是在IP里面,把这个10.40.155.43也加上,就可以了。

posted on 2010-01-22 15:27 哈哈的日子 阅读(7018) 评论(2)  编辑  收藏

FeedBack:
# re: 集成 JIRA 和 CROWD 用户认证 2010-03-18 23:00 FF
哈哈,我配置的时候需要license key。你那有这样的问题吗?  回复  更多评论
  
# re: 集成 JIRA 和 CROWD 用户认证 2010-11-09 17:00 詹平
向你请教Crowd 单点登录问题。

我用Crowd 做Jira与Confluence的整合,按照官方文档配置后,Confluence可使用Jira的用户了,但是单点登录不能实现(登录Jira后,再打开Confluence网站,仍然需要输入一次用户名和密码,不能自动登录)。

我使用的软件版本:Jira 4.0.1,Confluence 3.3,Crowd 2.0.7 。

整合步骤:

1.在Crowd 中新建名为Jira_Confluence的目录;

2.Import users 将Jira中的用户导入到Jira_Confluence中;

3.新建Jira应用,Directories使用Jira_Confluence;

4.新建confluence-users和confluence-administrators组,Directory选择Jira_Confluence,并向组中加入jira用户;

5.新建Confluence应用,Directories使用Jira_Confluence;

6.配置Jira,将Crowd目录\client下的crowd-integration-client-2.0.7.jar拷贝到Jira安装目录\WEB-INF\lib下;

7.将Crowd 安装目录\client\conf下的crowd.properties和crowd-ehcache.xml覆盖Jira安装目录\WEB-INF\classes下的相应文档;

8.按照官方文档依次配置crowd.properties、osuser.xml、propertyset.xml和seraph-config.xml,然后重启Jira;

9.配置Confluence,将Crowd目录\client下的crowd-integration-client-2.0.7.jar拷贝到Confluence安装目录\WEB-INF\lib下;

7.将Crowd 安装目录\client\conf下的crowd.properties和crowd-ehcache.xml覆盖Confluence安装目录\WEB-INF\classes下的相应文档;

8.按照官方文档依次配置crowd.properties、atlassian-user.xml和seraph-config.xml,然后重启Conluence 。



帮我看看是什么地方出错了,谢谢!

  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: