繁体   English   中英

spnego身份验证后的glassfish ldap授权

glassfish ldap authorization after spnego authentication

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我们使用Apache mod_proxy_http和SPNEGO成功实现了SSO。 在我的Java EE 6 Web应用程序中,我通过request.getRemoteUser()获得了经过身份验证的用户。

现在,什么是最好的授权方式。 我们的目标是检查通过LDAP的Microsoft AD中用户的特定角色成员身份。 用glassfish 3.1.2实现此目标的最佳方法是什么?

1 个回复

这取决于您的用例。 如果您只想从广告中了解角色,则可以在LDAP上进行手动搜索。

例:

import javax.naming.*;
import javax.naming.directory.*;

public class test {

    public String ldapUri = "ldap://localhost";
    public String usersContainer = "cn=users,dc=example,dc=com"; // base DN for search
    public String username = "user";
    public String password = "pass";

    public static void main(String args[]){

    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, ldapUri);
    env.put( Context.SECURITY_PRINCIPAL, username );
    env.put( Context.SECURITY_CREDENTIALS, password );
    env.put(Context.REFERRAL, "follow");

    try {
        DirContext ctx = new InitialDirContext(env);
        SearchControls ctls = new SearchControls();

        String name = "your_username"; // full DN name
        NamingEnumeration answer = ctx.search(usersContainer, "(member=" + name + ")",ctls );    

        while(answer.hasMore()) {
                SearchResult rslt = (SearchResult)answer.next();
                Attributes attrs = rslt.getAttributes();
                System.out.println(attrs.get("cn"));
            }

        ctx.close();


    } catch (NamingException e) {
        e.printStackTrace();
    }    
    }
 }

请注意,用户名必须是用户的完整DN,例如CN=user1,CN=users,DC=company,DC=com

如果要在应用程序中使用这些组进行角色分配,则有些棘手。 为此,您可能需要自定义ServerAuthModule此处为示例),或者您必须修改SPNEGO部分以根据来自AD / LDAP的数据分配角色。

1 SPNEGO身份验证

试图在python中为IBM构建的软件编写一个selenium测试用例。 得到以下错误。 (尝试安装Python的requests-gssapi ,但没有用。) 与服务器通信时发生错误。 HTTP 401:此客户端不支持SPNEGO身份验证。 ...

3 SPNEGO身份验证失败

我为我的Apache 2.4 CentOS 7计算机设置了kerberos + OpenLDAP身份验证。 我现在正尝试使用Tomcat 7的Kerberos + OpenLDAP设置SSO。为此,我选择了SPNEGO。 我相信我可以根据需要运行所有的LDAP和Kerberos设置。 ...

4 密码更改后的Kerberos / Spnego身份验证问题

我设置Tomcat使用SPNEGO身份验证,因此用户可以单点登录我们的Web应用程序而无需输入密码,一切正常。 昨天我更改了服务帐户的密码,我重新创建了keytab文件,但在Tomcat重新启动之后,SSO才开始工作。 在日志中我发现: 由于配置应该没问题,我不知道为什么我收到此错误 ...

5 ldap身份验证未授权

我正在尝试使用NodeJS上的LDAP客户端对用户进行身份验证。 客户端图书馆是护照。 使用Postman我发布: 我得到了“401 Unauthorized”。 作品。 思考? // ************************************ ...

7 tomcat kerberos身份验证+ ldap授权

我们使用LDAP来认证和授权tomcat服务器上的用户,但是现在需要从LDAP删除密码并切换到kerberos认证。 现在,我们想使用kerberos (可以正常工作)对用户进行 身份验证 ,并成功完成后,从LDAP DB中检索已登录用户的分配角色 。 我的幼稚希望是使用例如简单的自 ...

9 使用SPNEGO(Kerberos TGT)进行身份验证时更改LDAP属性

因此,我成功地通过SPNEGO进行了身份验证,并使用了来自KDC的TGT获得了主体名称。 但是我坚持只通过使用TGT令牌,DN(专有名称)和主体名称来更新LDAP中该用户的属性? 我正在看类似于以下内容的示例: 但是我得到了一个无效凭证的例外: 请您知道我在做什么错吗? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM