【问题标题】:Glassfish web service authorizationGlassfish 网络服务授权
【发布时间】:2012-01-30 14:58:19
【问题描述】:

我已经使用部署到 Glassfish 3.1.1 的 JAX-WS 设置了一个 Web 服务。我已经设法使用客户端证书(相互身份验证)设置 SSL,但我不知道如何进行正确的授权。我喜欢为只读访问、更新和删除数据设置角色。

Java EE 6 教程和 glassfish 安全指南指出,不能将用户添加到证书领域 Java EE Tutorial。那么在使用相互身份验证时授权用户的正确方法是什么?我必须在上面使用用户名和密码吗?

【问题讨论】:

    标签: java web-services security glassfish


    【解决方案1】:

    看看http://docs.oracle.com/cd/E18930_01/html/821-2435/ggktf.html#gksdc

    public class CertificateLM extends AppservCertificateLoginModule
    {
    
        protected void authenticateUser() throws LoginException
        {
            // get the DN from the X500Principal.
            String dname = getX500Principal().getName();
    
            // retrieve the groups of the DN from an external source, e.g. from LDAP
            String[] groups = getGroupsFromLDAP( dname ); 
    
            if( groups != null ) {
                 commitUserAuthentication( groups );
            }
            else {
                 throw new LoginException( "DN is unknown." );
            }
        }
    }
    

    【讨论】:

    • 谢谢,这看起来是一种可行的方法。我希望有一个解决方案可以利用 Java EE 和 glassfish 提供的基于角色的访问控制(使用安全注释、用户/组管理)。这就是为什么我确实将基本身份验证与客户端证书一起使用。
    • 上面的片段被插入到应用服务器的 JAAS 层。您的 JEE 应用程序仍将能够使用标准 JEE 安全性,例如 @annotations。
    • 我明白了。这也可以与用户帐户管理相关联,从而不需要外部系统(如上面的 LDAP)吗?
    • “用户帐户管理”是指从 GF 管理界面管理用户吗?如果为真,简短的回答是否定的,因为该功能使用不同的领域 (fileRealm)。
    • 答案是肯定的,但您需要深入研究 GF 资源并阅读有关 GF 安全性和自定义领域的信息。您应该能够将您的证书登录模块链接到 FileLoginModule 实现 - 实际上我很久以前就这样做了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 2017-12-29
    • 2013-08-16
    • 1970-01-01
    相关资源
    最近更新 更多