页面树结构

 

管理员可以通过设置互相信任的方式,配置JIRA与Confluence之间的通讯。如此一来,Confluence就可以以当前登录的用户身份,直接从JIRA查询信息,而JIRA则不会要求用户再次登录或输入密码。

以此方式设置JIRA信任Confluence后,我们就称Confluence为“被信任的应用程序”,而称JIRA为“产生信任的应用程序”

信任通讯主要用于将一个应用程序(例如JIRA的问题列表)的信息嵌入到另一个应用程序(例如Confluence页面)中。目前,只有JIRA可以设置为信任Confluence,并且只有下述两个宏通过使用信任的通讯而使功能得到了增强。

请关注将来更多类似产品的陆续跟进,特别是Atlassian推出的针对Atlassian产品进行紧密集成的JIRA Studio

潜在的安全风险

请勿将未完全确信的应用程序设置为信任。被信任的通讯使用公钥/私钥加密方式在被信任的服务器上创建ID,所以被信任的应用程序将会管理其自身私钥的安全。参见安全风险

在本页中:

必要条件

  • JIRA 3.12.0或更高版本。
  • Confluence 2.7.0 或更高版本。
  • 为了通过JIRA的验证,Confluence的用户也必须在JIRA中以相同的用户名进行注册。

    推荐共用用户信息

    我们强烈建议JIRA和Confluence共用同一套用户信息,而并非通过相同用户名使用两套不同的用户信息。如果Confluence访问JIRA的用户名在JIRA中不存在,则系统会报错。此外,使用两套用户信息还可能产生同名不同人的问题。被信任的应用程序并不提供用户密码,所以产生信任的应用程序将会从自己的用户信息中查找被信任应用程序的登录用户。

    (滴答)  提示:更精简高效的解决方案,请尝试Atlassian Crowd

为什么我们需要信任通讯

JIRA问题管理宏JIRA用户面板组件管理宏支持将JIRA的问题嵌入至Confluence页面。在Confluence 2.7以前的版本中,如果你希望列示被限制查看的JIRA问题,你就需要将JIRA的用户信息(包括用户名和密码)直接写在Confluence页面的宏代码中,这并不是十分安全的做法。

在上述过程中需要用户信息的原因如下:

  • 你的JIRA进程可能并非是公开的,你可能并不希望匿名用户访问你的问题。
  • 你可以针对你的问题通过安全设置进行限制。以此防止由于在Confluence中使用JIRA问题管理宏,而导致一些保密信息被泄密。

概览

下面是有关设置信任通讯的一些要点,每个要点的详细说明请参见下文。

通过配置信任的应用程序,使JIRA信任Confluence

创建两个应用程序之间的信任关系,仅需进行一次设置即可。一旦信任关系创建,则JIRA对于Confluence用户就完全透明了。

应用程序连接可以启用两个应用程序之间的信任关系。两个应用程序的连接可以实现信息的共享,以及从一个应用程序内部直接访问另一个应用程序。

你可以利用信任通讯的身份验证机制,配置应用程序连接。详细说明,请参见为应用程序连接配置信任应用程序身份验证

配置Confluence中的宏插件

默认情况下,Confluence为下面两个宏开启信任通讯。

Confluence系统管理员可以决定针对宏的信任通讯级别,不同的级别如下所示:

  • 在全局级别关闭信任通讯。
  • 在Confluence页面开启信任通讯,不显示警告消息。
  • 在Confluence页面开启信任通讯,显示全部警告消息。这是默认设置

如需修改对于JIRA宏插件的默认的信任通讯级别:

  1. 转至Confluence的“管理面板”。操作过程如下:
    • 点击页面顶部的“浏览”,在下拉菜单中选择“Confluence管理”。这时会显示“管理员登录”的界面。
    • 录入你的密码,然后点击“确定”。这样你就可以暂时登录至安全进程,访问“管理面板”。
  2. 在左侧面板中选择“插件”。
  3. 这时“插件管理器”会显示出来,显示已安装插件的列表。向下滚动页面,在“系统插件”中点击“JIRA宏”链接。
  4. 接下来“JIRA宏”的面板将会在屏幕中间展开出来。点击“启用”或者“禁用”,并进一步进入下述选项:
    • “JIRA application trust support” -  开启此项,则用户在浏览包含了JIRA问题管理宏或者JIRA用户面板组件管理宏的页面时,Confluence都会保持对JIRA的信任通讯,相关规范请参见这里。若关闭此项,则Confluence不会尝试在遇到上述宏时与JIRA进行信任通讯。
      (滴答)  如果不希望配置JIRA与Confluence之间的信任通讯,则应关闭上述选项。
    • “JIRA application trust warnings” - 开启此项,则Confluence将会显示在信任通讯过程中产生的全部的报错和警告信息(假设信任通讯已经开启的情况下)。关闭此项,则Confluence不会显示警告信息。详见下述故障检修
      (滴答)  如果你有大量的JIRA宏存在于Confluence进程,且指向不同的JIRA 服务器,则应关闭上述选项。一些JIRA服务器可能已经建立了信任通讯(需要相关功能开启),而另一些JIRA服务器则没有信任通讯。本例中,你可以通过关闭警告信息,来屏蔽来自那些由于JIRA宏连接了未设置信任通讯的JIRA服务器产生的警告信息。

截屏:插件管理器中的JIRA宏面板 

向Confluence页面添加宏

用户可以在Confluence页面中添加和编辑下述宏:

  • JIRA问题管理宏
  • JIRA用户面板组件管理宏 

    从宏标记代码中删除用户名和密码

    在Confluence 2.7以前的版本,如果你想要显示被限制浏览的JIRA问题,就需要将用户名和密码写在宏的标记代码中。一旦管理员设置了Confluence与JIRA之间的信任通讯,就无需再在宏的标记代码中包含用户名和密码信息。

     下列选项可以设置哪些问题会从JIRA中提取并显示在Confluence页面中:

    你希望做什么

    宏参数 

    URL 参数

    说明

    显示登录用户有权限访问的问题。如果用户未登录,则只列示自由访问的问题。

     

     

    无需指定任何授权参数。本例中,访问行为取决于管理员设置JIRA与Confluence之间信任通讯的方式。下面是不同访问行为的简述:如果信任通讯开启,验证工作就会持续进行。当一个已登录的用户访问你的页面时,他将只看到允许他看到的JIRA问题,如果他没有登录,则只能看到自由访问的问题。如果信任通讯关闭,Confluence页面只会显示那些设置为自由访问的JIRA问题。

    确保Confluence只显示经过授权的问题。

    anonymous

     

    无论任何用户(无论是否登录),Confluence页面只显示匿名可见的问题。在这种方式下,Confluence不会尝试与JIRA之间进行信任通讯。

    使用一个预设的用户名和密码访问JIRA问题。

     

    &os_username=MYNAME&os_password=MYPASSWORD

    不推荐。在Confluence2.7以前的版本,这是显示显示访问的问题的唯一方式。在Confluence2.7及更高版本中,该方式依然可用。在本方法中,Confluence不会尝试使用信任通讯的方式来访问JIRA。

有关浏览包含宏的Confluence页面的详细描述,请参考下面的章节 

查看Confluence页面

当用户查看包含了JIRA问题管理宏或者JIRA用户面板组件管理宏的Confluence页面时,将会产生如下情况:

  • 如果宏标记代码的URL参数中包含了确定的用户名和密码,则Confluence不会尝试对JIRA进行信任通讯。Confluence将会查看到指定用户被授权允许查看到的JIRA问题。此种方式与Confluence2.7以前版本的操作方式相同。
  • 如果宏标记代码包含了anonymous参数,则Confluence只会查看到匿名可见的问题。此种方式下,Confluence不会尝试对JIRA进行信任通讯。
  • 如果当前用户为匿名用户(未登录),则Confluence只会查看到匿名可见的问题。此种方式下,Confluence不会尝试对JIRA进行信任通讯。
  • 如果Confluence的插件管理器中将信任通讯设置为禁用,则Confluence不会尝试与JIRA进行信任通讯。所以如果在标记代码中没有写出明确的用户名和密码,则Confluence只会从JIRA中查看匿名可见的问题。此种方式与Confluence2.7以前版本的操作方式相同。
  • 如果COnfluence的插件管理器中将信任通讯设置为启用
    • 如果用户已登录,则Confluence将会与JIRA进行信任通讯。Confluence会发送用户名至JIRA,而JIRA则会根据该用户从用户数据库中找到对应的用户组和权限,反馈回该用户被授权的JIRA问题,Confluence继而在页面中显示这些JIRA问题。
    • 如果JIRA或Confluence在信任通讯过程中发生问题,则会在Confluence页面中的宏中显示错误信息- 详见下述疑难解答

安全风险

设置信任通讯后,请考虑下述安全风险。

  • 当设置JIRA信任某个应用程序后,就意味着允许该应用程序已自己特定的用户名来访问JIRA。这个被信任的应用程序无需经过验证过程,只需要通过自己的用户名就可以访问JIRA。JIRA并不要求该应用程序提供密码,这样做就是跳过了JIRA的授权机制
  • 除非确信该应用程序的全部代码的执行过程,否则请勿将其设置为信任的应用程序。
  • 被信任的通讯使用公钥/私钥加密方式在被信任的服务器上创建ID,所以被信任的应用程序将会管理其自身私钥的安全,而Confluence会将私钥存储至数据库。所以必须确保Confluence数据库以及全部数据库备份的安全。
  • 在JIRA中设置Confluence为信任的应用程序时,请确保为Confluence设置了一个IP地址。不要使用通配符*...*作为IP地址。未配置IP地址限制是安全漏洞,这样可能导致不知名的站点通过一个用户ID就可以登录至JIRA站点。
  • 请考虑连接不同用户数据库的风险,详述参见上文强烈建议在产生信任和被信任的应用程序之间共用用户数据库
  • 当配置一个应用程序信任另一个应用程序时,应该使用信任的网路或者SSL来保护敏感信息在应用程序之间的传递过程。这样做有助于阻止man-in-the-middle攻击

疑难解答

在Confluence页面中输出JIRA问题或JIRA用户面板组件时,可能产生的警告信息如下:

警告信息

原因

解决方案

警告信息可否关闭

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

JIRA运行于SSL之上

添加JIRA的SSL证书至JIVA密钥库

No

The JIRA server does not recognise your user name. Issues have been retrieved anonymously.

登录的Confluence用户并未在JIRA用户数据库注册

将该用户名添加至JIRA用户数据库。强烈推荐JIRA和Confluence共用一套用户数据库。

No

The JIRA server does not trust this Confluence instance for user authentication. Issues have been retrieved anonymously. You can set the macro to always use an anonymous request by setting the 'anonymous' parameter to 'true'.

JIRA未被设置为信任Confluence。

下述方案选择其一:

Yes

The JIRA server does not support trust requests. Issues have been retrieved anonymously. You can set the macro to always use an anonymous request by setting the 'anonymous' parameter to 'true'.

JIRA不能处理信任通讯(JIRA版本早于3.12.0)

下列方案选择其一:

Yes

Failed to login trusted application: confluence:14159892 due to: com.atlassian.security.auth.trustedapps.CertificateTooOldException: OLD_CERT; Certificate too old.

在JIRA和Confluence服务器之间存在日期/时间差异。

-

更多疑难解答,参见JIRA问题管理宏及被信任的应用程序疑难解答。

被信任的应用程序授权(TAA)协议技术概述

(滴答)  如需了解技术方面的更多细节,请参阅本节。

Atlassian在设置JIRA与Confluence的通讯过程中,开发了自己的通讯协议。以下为该过程的技术概述。 

配置JIRA信任Confluence:

  1. 当JIRA的系统管理员提供了Confluence的base URL时,JIRA就会要求Confluence提供一个被信任的应用程序的授权证书。该证书包含Confluence的被信任应用程序ID以及公钥(为了使用TAA通讯协议专门生成)。
  2. JIRA验证证书,并要求系统管理员提供有关信任关系的其他细节,例如Confluence进程的名称、时长、允许的IP地址以及允许的URLs请求。
  3. JIRA将全部信息存储至数据库。

生成由Confluence至JIRA的信任请求:

  1. Confluence向JIRA发送一个web请求,在请求中附加额外的请求标题,包含:
    • 请求的时间戳(暂时)+当前Confluence登录用户的用户名,用对称的密钥加密(联机生成)。
    • 对称密钥。用Confluence的私钥加密。
    • Confluence的应用程序ID(当信任通讯建立以后显示)。
  2. JIRA使用相关的存储信息,尝试编译加密的标题。它进行以下检查来验证请求:
    • 被信任的应用程序ID指向的是一个有效的被信任的应用程序。
    • 接到的用户名在JIRA用户数据库中存在。
    • 协议时长没有超期。
    • 该请求是从一个信任的IP地址发起的。
    • 请求的资源符合URL匹配列表中指定的要求。
  3. 如果上述任何检查失败,系统将会向Confluence发送响应信息,指出失败原因。如无失败,JIRA将会针对请求的期限对指定用户进行认证,并响应请求的资源(即JIRA的问题)。
相关主题

JIRA问题管理宏

JIRA用户面板组件管理宏

通过SSL连接至LDAP或者JIRA或者其他服务

通过单点登录将JIRA和Confluence集成

JIRA问题管理宏及被信任的应用程序疑难解答

  • 无标签