2012-04-20 134 views
2

我需要帮助配置GF3.1.2我做了以下更改,请让我知道如果我失去了重要的东西,因为改变后它不工作。 我的ID是[email protected]Glassfish 3.1.2配置客户端证书相互认证

我找不到任何特定的线程或在论坛上的答案,如果有任何链接是有帮助的。 如果您有任何文件请转发。

请做要紧

的web.xml

<login-config> 
    <auth-method>CLIENT-CERT</auth-method> 
</login-config> 
<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>Entire Application</web-resource-name> 
    <url-pattern>/faces/*</url-pattern> 
    <http-method>POST</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
    <description/> 
    <role-name>authorized</role-name> 
    </auth-constraint> 
    <user-data-constraint> 
    <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 
<security-role> 
    <description/> 
    <role-name>authorized</role-name> 
</security-role> 

sun-web.xml中

<security-role-mapping> 
    <role-name>authorized</role-name> 
    <principal-name>admin</principal-name> 
    <group-name>authorized</group-name> 
</security-role-mapping> 

domain.xml中

<security-service> 
    <auth-realm classname="com.sun.enterprise.security.auth.realm.file.FileRealm" name="admin-realm"> 
    <property name="file" value="${com.sun.aas.instanceRoot}/config/admin-keyfile"></property> 
    <property name="jaas-context" value="fileRealm"></property> 
    </auth-realm> 
    <auth-realm classname="com.sun.enterprise.security.auth.realm.file.FileRealm" name="file"> 
    <property name="file" value="${com.sun.aas.instanceRoot}/config/keyfile"></property> 
    <property name="jaas-context" value="fileRealm"></property> 
    </auth-realm> 
    <auth-realm classname="com.sun.enterprise.security.auth.realm.certificate.CertificateRealm" name="certificate"> 
    <property name="assign-groups" value="authorized"></property> 
    </auth-realm> 
+0

请更具体地说明“不工作”。你在建什么样的应用程序?你确定客户端工作正常吗? – TPete 2012-04-23 09:22:48

+0

具体来说,我的博客并不是要求客户端证书,我想用客户端证书来验证用户,我已经在glassfish服务器上做了特定的更改。 – user1347618 2012-04-23 17:12:34

+0

所以当我在浏览器中打网址时,它应该要求客户端证书?我对吗。 – user1347618 2012-04-23 17:48:22

回答

1

登录,配置sectio n是在你的web.xml不完全

<login-config> 
    <auth-method>CLIENT-CERT</auth-method> 
    <realm-name>certificate</realm-name> 
</login-config> 

境界名称内容必须在domain.xml中的auth-realm元素,而你的情况是“证书”的名称属性匹配

[更新]

此外,CA证书必须在服务器的信任

${com.sun.aas.instanceRoot}/config/cacerts.jks 
+0

服务器的密钥库包含服务器证书,而不是客户端证书。 – TPete 2012-04-23 09:17:40

+0

权,只有CA证书必须在cacerts中 – PA314159 2012-04-23 10:51:56

+0

进口嗨特异于客户端证书身份验证domain.xml中改变我的应用程序不要求客户端证书的浏览器来验证用户登录后,应该要求客户端证书,我有在login-config中添加领域名称,我怎么会知道我的客户端证书是通过GF3.1.2所需要的,如果你想配置文件,请让我知道。如何与你分享。 – user1347618 2012-04-23 17:11:06

0

当有人试图这样第一次需要时间让他们明白,withing进口简单的话来说,客户端和服务器信任库都应该相互信任其他证书,首先最好使用自签名证书交换证书到服务器和客户端,可以使用下面的文章获得简化步骤的帮助。遵循文章,然后你可以使用你自己的方法证书,这是你想要的。

http://www.slideshare.net/krizsan/scdjws-5-study-notes-3085287

SCDJWS 5 或现在知道的 Oracle认证专家, Java EE 5个的Web服务开发 学习笔记 通过 伊万Krizsan 版本:2012年2月23日

0

其实我尝试glassfish 3.1.2,它在以下条件下工作:

1.我必须使用sa我键入(信任)jks类型的存储和在相同的位置。为了与其他证书格式进行交流,您必须将它们转换为可以处理的格式jks格式。

2.in一个GlassFish的-web.xml中,你应该有一个这样的映射

<security-role-mapping> 
     <role-name>manager</role-name> 
    <group-name>authorized</group-name> 
    </security-role-mapping> 

3.in一个domain.xml文件,你应该有以下内容:

<auth-realm classname="com.sun.enterprise.security.auth.realm.certificate.CertificateRealm" name="certificate"> 
       <property name="assign-groups" value="authorized"></property> 
      </auth-realm> 

注意: web.xml你必须有领域名称匹配域。xml文件

+0

<登录-配置> CLIENT-CERT 证书 2013-06-16 16:24:49

+0

感谢khurshed抽空回答这个问题。 – user1347618 2013-06-17 16:49:04

0

我有同样的问题。

设置“客户身份验证:真”,在“HTTP侦听器2”。