You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@juddi.apache.org by Gunnlaugur Sigurðsson <gu...@gmail.com> on 2010/04/28 12:12:18 UTC

Authenticator implementation

Hello.

I'm implementing the Authenticator interface to authenticate users against
Active Directory in my workplace.

But I keep getting errors on the exceptions classes thrown by authenticate
and identify functions.

The following error comes up.
No exception of type AuthenticationException can be thrown; an exception
type must be a subclass of Throwable

Same error occurs whit the FatalErrorException class.


Here is my unimplemented JUDDIActiveDirectoryAuthhenticaton class.

public class JUDDIActiveDirectoryAuthhenticaton implements Authenticator {

    public String authenticate(String arg0, String arg1) throws
AuthenticationException, FatalErrorException {

        // TODO Auto-generated method stub
        return null;
    }

    public UddiEntityPublisher identify(String arg0, String arg1) throws
AuthenticationException, FatalErrorException {

        // TODO Auto-generated method stub
        return null;
    }
}

Any idea why I get this error?

Thanks.

-- 

Kveðja/Regards
Gunnlaugur Sigurðsson
gunnlaugursig@gmail.com
Mobile: (+354) 896-7963
Home: (+354) 565-5229

Re: Authenticator implementation

Posted by Kurt T Stam <ku...@gmail.com>.
Gunnlaugur Sigurðsson wrote:
> Hi Kurt.
>
> No, I don't have any documentation at the moment, but I can fix that.
Great, then we can add that to the Authentication chapter in the user guide.
> According to our IT operations department, this is an Active Directory 
> 2000/LDAP server uddi v3 compliant.
> No modifications to the LDAP server where needed. But if you want to 
> search for some juddi publisher group, I would imagine that it had to 
> be created.
>
> -Gunnlaugur
>
>
>
>
>
> On Sun, May 2, 2010 at 3:47 PM, Kurt T Stam <kurt.stam@gmail.com 
> <ma...@gmail.com>> wrote:
>
>     Hi Gunnlaugur,
>
>     Thanks for the example. We'd love to add it to the example
>     codebase. Do you have any documentation for this? Also which LDAP
>     did you use this with and did you have to add anything to the LDAP
>     server to make it work?
>
>     Thx!
>
>     --Kurt
>
>     Gunnlaugur Sigurðsson wrote:
>
>         Hi Jeff.
>
>         Here is an example one can use to authenticate against LDAP.
>         You might want to use this as an option for jUDDI users.
>
>         +++++++++++++++++++++++++++++++++++++++++++++++++++
>         package org.apache.juddi.v3.auth;
>
>         import javax.naming.ldap.Control;
>
>         public class LdapFastBindConnectionControl implements Control {
>
>            private static final long serialVersionUID =
>         7847083714026112317L;
>
>            public byte[] getEncodedValue() {
>                return null;
>            }
>
>            public String getID() {
>                return "1.2.840.113556.1.4.1781";
>            }
>
>            public boolean isCritical() {
>                return true;
>            }
>
>         }
>
>         +++++++++++++++++++++++++++++++++++++++++++++++++++
>
>         import java.util.Hashtable;
>
>         import javax.naming.Context;
>         import javax.naming.NamingEnumeration;
>         import javax.naming.NamingException;
>         import javax.naming.directory.Attribute;
>         import javax.naming.directory.Attributes;
>         import javax.naming.directory.SearchControls;
>         import javax.naming.directory.SearchResult;
>         import javax.naming.ldap.Control;
>         import javax.naming.ldap.InitialLdapContext;
>         import javax.naming.ldap.LdapContext;
>         import javax.persistence.EntityManager;
>         import javax.persistence.EntityTransaction;
>
>         import org.apache.juddi.config.PersistenceManager;
>         import org.apache.juddi.model.Publisher;
>         import org.apache.juddi.model.UddiEntityPublisher;
>         import org.apache.juddi.v3.error.AuthenticationException;
>         import org.apache.juddi.v3.error.ErrorMessage;
>         import org.apache.juddi.v3.error.FatalErrorException;
>         import org.apache.juddi.v3.error.UnknownUserException;
>         import org.apache.log4j.Logger;
>
>         public class LdapFastBindAuthenticator implements Authenticator {
>
>            private Logger log = Logger.getLogger(this.getClass());
>
>            private Hashtable<String, String> env = null;
>            private LdapContext ctx = null;
>            private Control[] connCtls = null;
>
>            public LdapFastBindAuthenticator(String url) throws
>         NamingException {
>                env = new Hashtable<String, String>();
>                env.put(Context.INITIAL_CONTEXT_FACTORY,
>         "com.sun.jndi.ldap.LdapCtxFactory");
>                env.put(Context.SECURITY_AUTHENTICATION, "simple");
>                env.put(Context.PROVIDER_URL, url); // organization
>         ldap url, example ldap://localhost:389
>
>                connCtls = new Control[] { new
>         LdapFastBindConnectionControl() };
>
>                try {
>                    ctx = new InitialLdapContext(env, connCtls);
>                } catch (NamingException e) {
>                    log.error("Naming exception " + e);
>                    throw e;
>                }
>            }
>
>            public String authenticate(String authorizedName, String cred)
>                    throws AuthenticationException, FatalErrorException {
>                if (authorizedName == null || "".equals(authorizedName)) {
>                    throw new UnknownUserException(new
>         ErrorMessage("errors.auth.NoPublisher", authorizedName));
>                }
>
>                boolean isLdapUser = false;
>                try {
>                    ctx.addToEnvironment(Context.SECURITY_PRINCIPAL,
>         authorizedName);
>                    ctx.addToEnvironment(Context.SECURITY_CREDENTIALS,
>         cred);
>                    ctx.reconnect(connCtls);
>                    log.info <http://log.info>
>         <http://log.info>(authorizedName + " is authenticated");
>
>                               /* if we don't want search ldap any
>         further we set isLdap as true, and skip the code between START
>         HERE and END HERE */
>                               /* Here is possible to make some more
>         extensive search in ldap to see if the user is part of some
>         group only allowed to access the registry. */
>                    /* START HERE */
>                       //Create the search controls                  
>          SearchControls searchCtls = new SearchControls();
>                               //Specify the search scope
>                  
>          searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
>                               //specify the LDAP search filter
>                    String searchFilter =
>         "(&(objectClass=user)(mail=user@mydomain.com
>         <ma...@mydomain.com> <mailto:user@mydomain.com
>         <ma...@mydomain.com>>)(department=foo))";
>
>
>                    //Specify the Base for the search
>                    String searchBase = "DC=domain,DC=com";
>
>                    //initialize counter to total the group members
>                    int totalResults = 0;
>
>                    //Specify the attributes to return
>                    String returnedAtts[]={"memberOf"};
>                    searchCtls.setReturningAttributes(returnedAtts);
>
>                    //Search for objects using the filter
>                    NamingEnumeration<?> answer =
>         ctx.search(searchBase, searchFilter, searchCtls);
>                               //Loop through the search results
>                    while (answer.hasMoreElements()) {
>                        SearchResult sr = (SearchResult)answer.next();
>                                       //Print out the groups
>                        Attributes attrs = sr.getAttributes();
>                        if (attrs != null) {
>                            try {
>                                for (NamingEnumeration<?> ae =
>         attrs.getAll();ae.hasMore();) {
>                                    Attribute attr = (Attribute)ae.next();
>                                    for (NamingEnumeration<?> e =
>         attr.getAll();e.hasMore();totalResults++) {
>                                        //System.out.println(" " +
>          totalResults + ". " +  e.next());
>
>                                         String tmp = e.next().toString();
>                                        if
>         (tmp.equalsIgnoreCase("CN=Foo,OU=Bar,OU=Bleh,OU=Doh,DC=domain,DC=com"))
>         {
>                                            System.out.println(true);
>                                          
>          System.out.println("Authentication Success!");
>                                            isLdapUser = true;
>                                            break;
>                                        } else if
>         (tmp.equalsIgnoreCase("CN=Foo,OU=Bar,OU=Bleh,OU=Doh,DC=domain,DC=com"))
>         {
>                                            System.out.println(true);
>                                          
>          System.out.println("Authentication Success!");
>                                            isLdapUser = true;
>                                            break;
>                                        } else {
>                                            continue;
>                                        }
>                                    }
>                                }
>                            } catch (NamingException e)    {
>                                throw new UnknownUserException(new
>         ErrorMessage("errors.auth.NoPublisher", authorizedName));
>                            }
>                        }
>                    }
>                    /* END HERE */
>                } catch (NamingException e) {
>                    log.error(authorizedName + " is not authenticated");
>                    throw new UnknownUserException(new
>         ErrorMessage("errors.auth.NoPublisher", authorizedName));
>                } finally {
>                    try {
>                        ctx.close();
>                    } catch (NamingException e) {
>                        log.error("Context close failure " + e);
>                    }
>                }
>
>                if (isLdapUser) {
>                    EntityManager em =
>         PersistenceManager.getEntityManager();
>                    EntityTransaction tx = em.getTransaction();
>                    try {
>                        tx.begin();
>                        Publisher publisher = em.find(Publisher.class,
>         authorizedName);
>                        if (publisher == null) {
>                            log.warn("Publisher was not found, adding
>         the publisher in on the fly.");
>                            publisher = new Publisher();
>                            publisher.setAuthorizedName(authorizedName);
>                            publisher.setIsAdmin("false");
>                            publisher.setIsEnabled("true");
>                            publisher.setMaxBindingsPerService(199);
>                            publisher.setMaxBusinesses(100);
>                            publisher.setMaxServicesPerBusiness(100);
>                            publisher.setMaxTmodels(100);
>                            publisher.setPublisherName("Unknown");
>                            em.persist(publisher);
>                            tx.commit();
>                        }
>                    } finally {
>                        if (tx.isActive()) {
>                            tx.rollback();
>                        }
>                        em.close();
>                    }
>                } else {
>                    throw new UnknownUserException(new
>         ErrorMessage("errors.auth.NoPublisher", authorizedName));
>                }
>                return authorizedName;
>            }
>
>            public UddiEntityPublisher identify(String authInfo, String
>         authorizedName) throws AuthenticationException,
>         FatalErrorException {
>                EntityManager em = PersistenceManager.getEntityManager();
>                EntityTransaction tx = em.getTransaction();
>                try {
>                    tx.begin();
>                    Publisher publisher = em.find(Publisher.class,
>         authorizedName);
>                    if (publisher == null)
>                        throw new UnknownUserException(new
>         ErrorMessage("errors.auth.NoPublisher", authorizedName));
>                    return publisher;
>                } finally {
>                    if (tx.isActive()) {
>                        tx.rollback();
>                    }
>                    em.close();
>                }
>            }
>         }
>
>         +++++++++++++++++++++++++++++++++++++++++++++++++++
>
>
>         Thanks.
>
>         -Gunnlaugur
>
>
>
>
>
>         On Wed, Apr 28, 2010 at 5:32 PM, Jeff Faath <jfaath@apache.org
>         <ma...@apache.org> <mailto:jfaath@apache.org
>         <ma...@apache.org>>> wrote:
>
>            Is this a compiler error or a runtime error?  Maybe if you
>         tried
>            to implement something in those methods where an exception was
>            actually thrown?
>
>            
>            *From:* Gunnlaugur Sigurðsson
>         [mailto:gunnlaugursig@gmail.com <ma...@gmail.com>
>            <mailto:gunnlaugursig@gmail.com
>         <ma...@gmail.com>>]
>            *Sent:* Wednesday, April 28, 2010 10:05 AM
>
>            *To:* juddi-user@ws.apache.org
>         <ma...@ws.apache.org>
>         <mailto:juddi-user@ws.apache.org
>         <ma...@ws.apache.org>>
>
>            *Subject:* Re: Authenticator implementation
>
>            
>            Hi Jeff.
>
>            I have a project I created in eclipse where I have the core
>         juddi
>            jar on the jave build path.
>            Is there a better way for me to create the authenticator,
>         than in
>            my own project? Like within the juddi code bundle and build
>         it there?
>
>            Thanks.
>
>            -Gunnlaugur
>
>
>
>            On Wed, Apr 28, 2010 at 2:51 PM, Jeff Faath
>         <jfaath@apache.org <ma...@apache.org>
>            <mailto:jfaath@apache.org <ma...@apache.org>>> wrote:
>
>            Gunnlaugur,
>
>            
>            That error seems to be something  to do with the
>         environment.  Is
>            the core jUDDI jar in the classpath where the authenticator is
>            being executed?
>
>            
>            -Jeff
>
>            
>            *From:* Gunnlaugur Sigurðsson
>         [mailto:gunnlaugursig@gmail.com <ma...@gmail.com>
>            <mailto:gunnlaugursig@gmail.com
>         <ma...@gmail.com>>]
>            *Sent:* Wednesday, April 28, 2010 5:12 AM
>            *To:* juddi-user@ws.apache.org
>         <ma...@ws.apache.org>
>         <mailto:juddi-user@ws.apache.org
>         <ma...@ws.apache.org>>
>
>            *Subject:* Authenticator implementation
>
>            
>            Hello.
>
>            I'm implementing the Authenticator interface to
>         authenticate users
>            against Active Directory in my workplace.
>
>            But I keep getting errors on the exceptions classes thrown by
>            authenticate and identify functions.
>
>            The following error comes up.
>            No exception of type AuthenticationException can be thrown; an
>            exception type must be a subclass of Throwable
>
>            Same error occurs whit the FatalErrorException class.
>
>
>            Here is my unimplemented JUDDIActiveDirectoryAuthhenticaton
>         class.
>
>            public class JUDDIActiveDirectoryAuthhenticaton implements
>            Authenticator {
>
>                public String authenticate(String arg0, String arg1) throws
>            AuthenticationException, FatalErrorException {
>                               // TODO Auto-generated method stub
>                    return null;
>                }
>
>                public UddiEntityPublisher identify(String arg0, String
>         arg1)
>            throws AuthenticationException, FatalErrorException {
>
>                    // TODO Auto-generated method stub
>                    return null;
>                }
>            }
>
>            Any idea why I get this error?
>
>            Thanks.
>
>            --
>            Kveðja/Regards
>            Gunnlaugur Sigurðsson
>            gunnlaugursig@gmail.com <ma...@gmail.com>
>         <mailto:gunnlaugursig@gmail.com <ma...@gmail.com>>
>
>            Mobile: (+354) 896-7963
>            Home: (+354) 565-5229
>
>
>
>
>            --
>            Kveðja/Regards
>            Gunnlaugur Sigurðsson
>            gunnlaugursig@gmail.com <ma...@gmail.com>
>         <mailto:gunnlaugursig@gmail.com <ma...@gmail.com>>
>
>            Mobile: (+354) 896-7963
>            Home: (+354) 565-5229
>
>
>
>
>         -- 
>
>         Kveðja/Regards
>         Gunnlaugur Sigurðsson
>         gunnlaugursig@gmail.com <ma...@gmail.com>
>         <mailto:gunnlaugursig@gmail.com <ma...@gmail.com>>
>
>         Mobile: (+354) 896-7963
>         Home: (+354) 565-5229
>
>
>
>
>
> -- 
>
> Kveðja/Regards
> Gunnlaugur Sigurðsson
> gunnlaugursig@gmail.com <ma...@gmail.com>
> Mobile: (+354) 896-7963
> Home: (+354) 565-5229


Re: Authenticator implementation

Posted by Gunnlaugur Sigurðsson <gu...@gmail.com>.
Hi Kurt.

No, I don't have any documentation at the moment, but I can fix that.
According to our IT operations department, this is an Active Directory
2000/LDAP server uddi v3 compliant.
No modifications to the LDAP server where needed. But if you want to search
for some juddi publisher group, I would imagine that it had to be created.

-Gunnlaugur





On Sun, May 2, 2010 at 3:47 PM, Kurt T Stam <ku...@gmail.com> wrote:

> Hi Gunnlaugur,
>
> Thanks for the example. We'd love to add it to the example codebase. Do you
> have any documentation for this? Also which LDAP did you use this with and
> did you have to add anything to the LDAP server to make it work?
>
> Thx!
>
> --Kurt
>
> Gunnlaugur Sigurðsson wrote:
>
>> Hi Jeff.
>>
>> Here is an example one can use to authenticate against LDAP. You might
>> want to use this as an option for jUDDI users.
>>
>> +++++++++++++++++++++++++++++++++++++++++++++++++++
>> package org.apache.juddi.v3.auth;
>>
>> import javax.naming.ldap.Control;
>>
>> public class LdapFastBindConnectionControl implements Control {
>>
>>    private static final long serialVersionUID = 7847083714026112317L;
>>
>>    public byte[] getEncodedValue() {
>>        return null;
>>    }
>>
>>    public String getID() {
>>        return "1.2.840.113556.1.4.1781";
>>    }
>>
>>    public boolean isCritical() {
>>        return true;
>>    }
>>
>> }
>>
>> +++++++++++++++++++++++++++++++++++++++++++++++++++
>>
>> import java.util.Hashtable;
>>
>> import javax.naming.Context;
>> import javax.naming.NamingEnumeration;
>> import javax.naming.NamingException;
>> import javax.naming.directory.Attribute;
>> import javax.naming.directory.Attributes;
>> import javax.naming.directory.SearchControls;
>> import javax.naming.directory.SearchResult;
>> import javax.naming.ldap.Control;
>> import javax.naming.ldap.InitialLdapContext;
>> import javax.naming.ldap.LdapContext;
>> import javax.persistence.EntityManager;
>> import javax.persistence.EntityTransaction;
>>
>> import org.apache.juddi.config.PersistenceManager;
>> import org.apache.juddi.model.Publisher;
>> import org.apache.juddi.model.UddiEntityPublisher;
>> import org.apache.juddi.v3.error.AuthenticationException;
>> import org.apache.juddi.v3.error.ErrorMessage;
>> import org.apache.juddi.v3.error.FatalErrorException;
>> import org.apache.juddi.v3.error.UnknownUserException;
>> import org.apache.log4j.Logger;
>>
>> public class LdapFastBindAuthenticator implements Authenticator {
>>
>>    private Logger log = Logger.getLogger(this.getClass());
>>
>>    private Hashtable<String, String> env = null;
>>    private LdapContext ctx = null;
>>    private Control[] connCtls = null;
>>
>>    public LdapFastBindAuthenticator(String url) throws NamingException {
>>        env = new Hashtable<String, String>();
>>        env.put(Context.INITIAL_CONTEXT_FACTORY,
>> "com.sun.jndi.ldap.LdapCtxFactory");
>>        env.put(Context.SECURITY_AUTHENTICATION, "simple");
>>        env.put(Context.PROVIDER_URL, url); // organization ldap url,
>> example ldap://localhost:389
>>
>>        connCtls = new Control[] { new LdapFastBindConnectionControl() };
>>
>>        try {
>>            ctx = new InitialLdapContext(env, connCtls);
>>        } catch (NamingException e) {
>>            log.error("Naming exception " + e);
>>            throw e;
>>        }
>>    }
>>
>>    public String authenticate(String authorizedName, String cred)
>>            throws AuthenticationException, FatalErrorException {
>>        if (authorizedName == null || "".equals(authorizedName)) {
>>            throw new UnknownUserException(new
>> ErrorMessage("errors.auth.NoPublisher", authorizedName));
>>        }
>>
>>        boolean isLdapUser = false;
>>        try {
>>            ctx.addToEnvironment(Context.SECURITY_PRINCIPAL,
>> authorizedName);
>>            ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, cred);
>>            ctx.reconnect(connCtls);
>>            log.info <http://log.info>(authorizedName + " is
>> authenticated");
>>
>>                       /* if we don't want search ldap any further we set
>> isLdap as true, and skip the code between START HERE and END HERE */
>>                       /* Here is possible to make some more extensive
>> search in ldap to see if the user is part of some group only allowed to
>> access the registry. */
>>            /* START HERE */
>>               //Create the search controls
>>  SearchControls searchCtls = new SearchControls();
>>                       //Specify the search scope
>>            searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
>>                       //specify the LDAP search filter
>>            String searchFilter = "(&(objectClass=user)(mail=
>> user@mydomain.com <ma...@mydomain.com>)(department=foo))";
>>
>>
>>            //Specify the Base for the search
>>            String searchBase = "DC=domain,DC=com";
>>
>>            //initialize counter to total the group members
>>            int totalResults = 0;
>>
>>            //Specify the attributes to return
>>            String returnedAtts[]={"memberOf"};
>>            searchCtls.setReturningAttributes(returnedAtts);
>>
>>            //Search for objects using the filter
>>            NamingEnumeration<?> answer = ctx.search(searchBase,
>> searchFilter, searchCtls);
>>                       //Loop through the search results
>>            while (answer.hasMoreElements()) {
>>                SearchResult sr = (SearchResult)answer.next();
>>                               //Print out the groups
>>                Attributes attrs = sr.getAttributes();
>>                if (attrs != null) {
>>                    try {
>>                        for (NamingEnumeration<?> ae =
>> attrs.getAll();ae.hasMore();) {
>>                            Attribute attr = (Attribute)ae.next();
>>                            for (NamingEnumeration<?> e =
>> attr.getAll();e.hasMore();totalResults++) {
>>                                //System.out.println(" " +  totalResults +
>> ". " +  e.next());
>>
>>                                 String tmp = e.next().toString();
>>                                if
>> (tmp.equalsIgnoreCase("CN=Foo,OU=Bar,OU=Bleh,OU=Doh,DC=domain,DC=com")) {
>>                                    System.out.println(true);
>>                                    System.out.println("Authentication
>> Success!");
>>                                    isLdapUser = true;
>>                                    break;
>>                                } else if
>> (tmp.equalsIgnoreCase("CN=Foo,OU=Bar,OU=Bleh,OU=Doh,DC=domain,DC=com")) {
>>                                    System.out.println(true);
>>                                    System.out.println("Authentication
>> Success!");
>>                                    isLdapUser = true;
>>                                    break;
>>                                } else {
>>                                    continue;
>>                                }
>>                            }
>>                        }
>>                    } catch (NamingException e)    {
>>                        throw new UnknownUserException(new
>> ErrorMessage("errors.auth.NoPublisher", authorizedName));
>>                    }
>>                }
>>            }
>>            /* END HERE */
>>        } catch (NamingException e) {
>>            log.error(authorizedName + " is not authenticated");
>>            throw new UnknownUserException(new
>> ErrorMessage("errors.auth.NoPublisher", authorizedName));
>>        } finally {
>>            try {
>>                ctx.close();
>>            } catch (NamingException e) {
>>                log.error("Context close failure " + e);
>>            }
>>        }
>>
>>        if (isLdapUser) {
>>            EntityManager em = PersistenceManager.getEntityManager();
>>            EntityTransaction tx = em.getTransaction();
>>            try {
>>                tx.begin();
>>                Publisher publisher = em.find(Publisher.class,
>> authorizedName);
>>                if (publisher == null) {
>>                    log.warn("Publisher was not found, adding the publisher
>> in on the fly.");
>>                    publisher = new Publisher();
>>                    publisher.setAuthorizedName(authorizedName);
>>                    publisher.setIsAdmin("false");
>>                    publisher.setIsEnabled("true");
>>                    publisher.setMaxBindingsPerService(199);
>>                    publisher.setMaxBusinesses(100);
>>                    publisher.setMaxServicesPerBusiness(100);
>>                    publisher.setMaxTmodels(100);
>>                    publisher.setPublisherName("Unknown");
>>                    em.persist(publisher);
>>                    tx.commit();
>>                }
>>            } finally {
>>                if (tx.isActive()) {
>>                    tx.rollback();
>>                }
>>                em.close();
>>            }
>>        } else {
>>            throw new UnknownUserException(new
>> ErrorMessage("errors.auth.NoPublisher", authorizedName));
>>        }
>>        return authorizedName;
>>    }
>>
>>    public UddiEntityPublisher identify(String authInfo, String
>> authorizedName) throws AuthenticationException, FatalErrorException {
>>        EntityManager em = PersistenceManager.getEntityManager();
>>        EntityTransaction tx = em.getTransaction();
>>        try {
>>            tx.begin();
>>            Publisher publisher = em.find(Publisher.class, authorizedName);
>>            if (publisher == null)
>>                throw new UnknownUserException(new
>> ErrorMessage("errors.auth.NoPublisher", authorizedName));
>>            return publisher;
>>        } finally {
>>            if (tx.isActive()) {
>>                tx.rollback();
>>            }
>>            em.close();
>>        }
>>    }
>> }
>>
>> +++++++++++++++++++++++++++++++++++++++++++++++++++
>>
>>
>> Thanks.
>>
>> -Gunnlaugur
>>
>>
>>
>>
>>
>> On Wed, Apr 28, 2010 at 5:32 PM, Jeff Faath <jfaath@apache.org <mailto:
>> jfaath@apache.org>> wrote:
>>
>>    Is this a compiler error or a runtime error?  Maybe if you tried
>>    to implement something in those methods where an exception was
>>    actually thrown?
>>
>>
>>    *From:* Gunnlaugur Sigurðsson [mailto:gunnlaugursig@gmail.com
>>    <ma...@gmail.com>]
>>    *Sent:* Wednesday, April 28, 2010 10:05 AM
>>
>>    *To:* juddi-user@ws.apache.org <ma...@ws.apache.org>
>>
>>    *Subject:* Re: Authenticator implementation
>>
>>
>>    Hi Jeff.
>>
>>    I have a project I created in eclipse where I have the core juddi
>>    jar on the jave build path.
>>    Is there a better way for me to create the authenticator, than in
>>    my own project? Like within the juddi code bundle and build it there?
>>
>>    Thanks.
>>
>>    -Gunnlaugur
>>
>>
>>
>>    On Wed, Apr 28, 2010 at 2:51 PM, Jeff Faath <jfaath@apache.org
>>    <ma...@apache.org>> wrote:
>>
>>    Gunnlaugur,
>>
>>
>>    That error seems to be something  to do with the environment.  Is
>>    the core jUDDI jar in the classpath where the authenticator is
>>    being executed?
>>
>>
>>    -Jeff
>>
>>
>>    *From:* Gunnlaugur Sigurðsson [mailto:gunnlaugursig@gmail.com
>>    <ma...@gmail.com>]
>>    *Sent:* Wednesday, April 28, 2010 5:12 AM
>>    *To:* juddi-user@ws.apache.org <ma...@ws.apache.org>
>>
>>    *Subject:* Authenticator implementation
>>
>>
>>    Hello.
>>
>>    I'm implementing the Authenticator interface to authenticate users
>>    against Active Directory in my workplace.
>>
>>    But I keep getting errors on the exceptions classes thrown by
>>    authenticate and identify functions.
>>
>>    The following error comes up.
>>    No exception of type AuthenticationException can be thrown; an
>>    exception type must be a subclass of Throwable
>>
>>    Same error occurs whit the FatalErrorException class.
>>
>>
>>    Here is my unimplemented JUDDIActiveDirectoryAuthhenticaton class.
>>
>>    public class JUDDIActiveDirectoryAuthhenticaton implements
>>    Authenticator {
>>
>>        public String authenticate(String arg0, String arg1) throws
>>    AuthenticationException, FatalErrorException {
>>                       // TODO Auto-generated method stub
>>            return null;
>>        }
>>
>>        public UddiEntityPublisher identify(String arg0, String arg1)
>>    throws AuthenticationException, FatalErrorException {
>>
>>            // TODO Auto-generated method stub
>>            return null;
>>        }
>>    }
>>
>>    Any idea why I get this error?
>>
>>    Thanks.
>>
>>    --
>>    Kveðja/Regards
>>    Gunnlaugur Sigurðsson
>>    gunnlaugursig@gmail.com <ma...@gmail.com>
>>
>>    Mobile: (+354) 896-7963
>>    Home: (+354) 565-5229
>>
>>
>>
>>
>>    --
>>    Kveðja/Regards
>>    Gunnlaugur Sigurðsson
>>    gunnlaugursig@gmail.com <ma...@gmail.com>
>>
>>    Mobile: (+354) 896-7963
>>    Home: (+354) 565-5229
>>
>>
>>
>>
>> --
>>
>> Kveðja/Regards
>> Gunnlaugur Sigurðsson
>> gunnlaugursig@gmail.com <ma...@gmail.com>
>>
>> Mobile: (+354) 896-7963
>> Home: (+354) 565-5229
>>
>
>


-- 

Kveðja/Regards
Gunnlaugur Sigurðsson
gunnlaugursig@gmail.com
Mobile: (+354) 896-7963
Home: (+354) 565-5229

Re: Authenticator implementation

Posted by Kurt T Stam <ku...@gmail.com>.
Hi Gunnlaugur,

Thanks for the example. We'd love to add it to the example codebase. Do 
you have any documentation for this? Also which LDAP did you use this 
with and did you have to add anything to the LDAP server to make it work?

Thx!

--Kurt

Gunnlaugur Sigurðsson wrote:
> Hi Jeff.
>
> Here is an example one can use to authenticate against LDAP. You might 
> want to use this as an option for jUDDI users.
>
> +++++++++++++++++++++++++++++++++++++++++++++++++++
> package org.apache.juddi.v3.auth;
>
> import javax.naming.ldap.Control;
>
> public class LdapFastBindConnectionControl implements Control {
>
>     private static final long serialVersionUID = 7847083714026112317L;
>
>     public byte[] getEncodedValue() {
>         return null;
>     }
>
>     public String getID() {
>         return "1.2.840.113556.1.4.1781";
>     }
>
>     public boolean isCritical() {
>         return true;
>     }
>
> }
>
> +++++++++++++++++++++++++++++++++++++++++++++++++++
>
> import java.util.Hashtable;
>
> import javax.naming.Context;
> import javax.naming.NamingEnumeration;
> import javax.naming.NamingException;
> import javax.naming.directory.Attribute;
> import javax.naming.directory.Attributes;
> import javax.naming.directory.SearchControls;
> import javax.naming.directory.SearchResult;
> import javax.naming.ldap.Control;
> import javax.naming.ldap.InitialLdapContext;
> import javax.naming.ldap.LdapContext;
> import javax.persistence.EntityManager;
> import javax.persistence.EntityTransaction;
>
> import org.apache.juddi.config.PersistenceManager;
> import org.apache.juddi.model.Publisher;
> import org.apache.juddi.model.UddiEntityPublisher;
> import org.apache.juddi.v3.error.AuthenticationException;
> import org.apache.juddi.v3.error.ErrorMessage;
> import org.apache.juddi.v3.error.FatalErrorException;
> import org.apache.juddi.v3.error.UnknownUserException;
> import org.apache.log4j.Logger;
>
> public class LdapFastBindAuthenticator implements Authenticator {
>
>     private Logger log = Logger.getLogger(this.getClass());
>
>     private Hashtable<String, String> env = null;
>     private LdapContext ctx = null;
>     private Control[] connCtls = null;
>
>     public LdapFastBindAuthenticator(String url) throws NamingException {
>         env = new Hashtable<String, String>();
>         env.put(Context.INITIAL_CONTEXT_FACTORY, 
> "com.sun.jndi.ldap.LdapCtxFactory");
>         env.put(Context.SECURITY_AUTHENTICATION, "simple");
>         env.put(Context.PROVIDER_URL, url); // organization ldap url, 
> example ldap://localhost:389
>
>         connCtls = new Control[] { new LdapFastBindConnectionControl() };
>
>         try {
>             ctx = new InitialLdapContext(env, connCtls);
>         } catch (NamingException e) {
>             log.error("Naming exception " + e);
>             throw e;
>         }
>     }
>
>     public String authenticate(String authorizedName, String cred)
>             throws AuthenticationException, FatalErrorException {
>         if (authorizedName == null || "".equals(authorizedName)) {
>             throw new UnknownUserException(new 
> ErrorMessage("errors.auth.NoPublisher", authorizedName));
>         }
>
>         boolean isLdapUser = false;
>         try {
>             ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, 
> authorizedName);
>             ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, cred);
>             ctx.reconnect(connCtls);
>             log.info <http://log.info>(authorizedName + " is 
> authenticated");
>            
>             /* if we don't want search ldap any further we set isLdap 
> as true, and skip the code between START HERE and END HERE */
>            
>             /* Here is possible to make some more extensive search in 
> ldap to see if the user is part of some group only allowed to access 
> the registry. */
>             /* START HERE */
>                //Create the search controls        
>             SearchControls searchCtls = new SearchControls();
>            
>             //Specify the search scope
>             searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
>            
>             //specify the LDAP search filter
>             String searchFilter = 
> "(&(objectClass=user)(mail=user@mydomain.com 
> <ma...@mydomain.com>)(department=foo))";
>
>             //Specify the Base for the search
>             String searchBase = "DC=domain,DC=com";
>
>             //initialize counter to total the group members
>             int totalResults = 0;
>
>             //Specify the attributes to return
>             String returnedAtts[]={"memberOf"};
>             searchCtls.setReturningAttributes(returnedAtts);
>
>             //Search for objects using the filter
>             NamingEnumeration<?> answer = ctx.search(searchBase, 
> searchFilter, searchCtls);
>            
>             //Loop through the search results
>             while (answer.hasMoreElements()) {
>                 SearchResult sr = (SearchResult)answer.next();
>                
>                 //Print out the groups
>                 Attributes attrs = sr.getAttributes();
>                 if (attrs != null) {
>                     try {
>                         for (NamingEnumeration<?> ae = 
> attrs.getAll();ae.hasMore();) {
>                             Attribute attr = (Attribute)ae.next();
>                             for (NamingEnumeration<?> e = 
> attr.getAll();e.hasMore();totalResults++) {
>                                 //System.out.println(" " +  
> totalResults + ". " +  e.next());
>
>                                  String tmp = e.next().toString();
>                                 if 
> (tmp.equalsIgnoreCase("CN=Foo,OU=Bar,OU=Bleh,OU=Doh,DC=domain,DC=com")) {
>                                     System.out.println(true);
>                                     System.out.println("Authentication 
> Success!");
>                                     isLdapUser = true;
>                                     break;
>                                 } else if 
> (tmp.equalsIgnoreCase("CN=Foo,OU=Bar,OU=Bleh,OU=Doh,DC=domain,DC=com")) {
>                                     System.out.println(true);
>                                     System.out.println("Authentication 
> Success!");
>                                     isLdapUser = true;
>                                     break;
>                                 } else {
>                                     continue;
>                                 }
>                             }
>                         }
>                     } catch (NamingException e)    {
>                         throw new UnknownUserException(new 
> ErrorMessage("errors.auth.NoPublisher", authorizedName));
>                     }
>                 }
>             }
>             /* END HERE */
>         } catch (NamingException e) {
>             log.error(authorizedName + " is not authenticated");
>             throw new UnknownUserException(new 
> ErrorMessage("errors.auth.NoPublisher", authorizedName));
>         } finally {
>             try {
>                 ctx.close();
>             } catch (NamingException e) {
>                 log.error("Context close failure " + e);
>             }
>         }
>
>         if (isLdapUser) {
>             EntityManager em = PersistenceManager.getEntityManager();
>             EntityTransaction tx = em.getTransaction();
>             try {
>                 tx.begin();
>                 Publisher publisher = em.find(Publisher.class, 
> authorizedName);
>                 if (publisher == null) {
>                     log.warn("Publisher was not found, adding the 
> publisher in on the fly.");
>                     publisher = new Publisher();
>                     publisher.setAuthorizedName(authorizedName);
>                     publisher.setIsAdmin("false");
>                     publisher.setIsEnabled("true");
>                     publisher.setMaxBindingsPerService(199);
>                     publisher.setMaxBusinesses(100);
>                     publisher.setMaxServicesPerBusiness(100);
>                     publisher.setMaxTmodels(100);
>                     publisher.setPublisherName("Unknown");
>                     em.persist(publisher);
>                     tx.commit();
>                 }
>             } finally {
>                 if (tx.isActive()) {
>                     tx.rollback();
>                 }
>                 em.close();
>             }
>         } else {
>             throw new UnknownUserException(new 
> ErrorMessage("errors.auth.NoPublisher", authorizedName));
>         }
>         return authorizedName;
>     }
>
>     public UddiEntityPublisher identify(String authInfo, String 
> authorizedName) throws AuthenticationException, FatalErrorException {
>         EntityManager em = PersistenceManager.getEntityManager();
>         EntityTransaction tx = em.getTransaction();
>         try {
>             tx.begin();
>             Publisher publisher = em.find(Publisher.class, 
> authorizedName);
>             if (publisher == null)
>                 throw new UnknownUserException(new 
> ErrorMessage("errors.auth.NoPublisher", authorizedName));
>             return publisher;
>         } finally {
>             if (tx.isActive()) {
>                 tx.rollback();
>             }
>             em.close();
>         }
>     }
> }
>
> +++++++++++++++++++++++++++++++++++++++++++++++++++
>
>
> Thanks.
>
> -Gunnlaugur
>
>
>
>
>
> On Wed, Apr 28, 2010 at 5:32 PM, Jeff Faath <jfaath@apache.org 
> <ma...@apache.org>> wrote:
>
>     Is this a compiler error or a runtime error?  Maybe if you tried
>     to implement something in those methods where an exception was
>     actually thrown?
>
>      
>
>     *From:* Gunnlaugur Sigurðsson [mailto:gunnlaugursig@gmail.com
>     <ma...@gmail.com>]
>     *Sent:* Wednesday, April 28, 2010 10:05 AM
>
>     *To:* juddi-user@ws.apache.org <ma...@ws.apache.org>
>     *Subject:* Re: Authenticator implementation
>
>      
>
>     Hi Jeff.
>
>     I have a project I created in eclipse where I have the core juddi
>     jar on the jave build path.
>     Is there a better way for me to create the authenticator, than in
>     my own project? Like within the juddi code bundle and build it there?
>
>     Thanks.
>
>     -Gunnlaugur
>
>
>
>     On Wed, Apr 28, 2010 at 2:51 PM, Jeff Faath <jfaath@apache.org
>     <ma...@apache.org>> wrote:
>
>     Gunnlaugur,
>
>      
>
>     That error seems to be something  to do with the environment.  Is
>     the core jUDDI jar in the classpath where the authenticator is
>     being executed?
>
>      
>
>     -Jeff
>
>      
>
>     *From:* Gunnlaugur Sigurðsson [mailto:gunnlaugursig@gmail.com
>     <ma...@gmail.com>]
>     *Sent:* Wednesday, April 28, 2010 5:12 AM
>     *To:* juddi-user@ws.apache.org <ma...@ws.apache.org>
>     *Subject:* Authenticator implementation
>
>      
>
>     Hello.
>
>     I'm implementing the Authenticator interface to authenticate users
>     against Active Directory in my workplace.
>
>     But I keep getting errors on the exceptions classes thrown by
>     authenticate and identify functions.
>
>     The following error comes up.
>     No exception of type AuthenticationException can be thrown; an
>     exception type must be a subclass of Throwable
>
>     Same error occurs whit the FatalErrorException class.
>
>
>     Here is my unimplemented JUDDIActiveDirectoryAuthhenticaton class.
>
>     public class JUDDIActiveDirectoryAuthhenticaton implements
>     Authenticator {
>
>         public String authenticate(String arg0, String arg1) throws
>     AuthenticationException, FatalErrorException {
>            
>             // TODO Auto-generated method stub
>             return null;
>         }
>
>         public UddiEntityPublisher identify(String arg0, String arg1)
>     throws AuthenticationException, FatalErrorException {
>
>             // TODO Auto-generated method stub
>             return null;
>         }
>     }
>
>     Any idea why I get this error?
>
>     Thanks.
>
>     -- 
>
>     Kveðja/Regards
>     Gunnlaugur Sigurðsson
>     gunnlaugursig@gmail.com <ma...@gmail.com>
>     Mobile: (+354) 896-7963
>     Home: (+354) 565-5229
>
>
>
>
>     -- 
>
>     Kveðja/Regards
>     Gunnlaugur Sigurðsson
>     gunnlaugursig@gmail.com <ma...@gmail.com>
>     Mobile: (+354) 896-7963
>     Home: (+354) 565-5229
>
>
>
>
> -- 
>
> Kveðja/Regards
> Gunnlaugur Sigurðsson
> gunnlaugursig@gmail.com <ma...@gmail.com>
> Mobile: (+354) 896-7963
> Home: (+354) 565-5229


Re: Authenticator implementation

Posted by Gunnlaugur Sigurðsson <gu...@gmail.com>.
Hi Jeff.

Here is an example one can use to authenticate against LDAP. You might want
to use this as an option for jUDDI users.

+++++++++++++++++++++++++++++++++++++++++++++++++++
package org.apache.juddi.v3.auth;

import javax.naming.ldap.Control;

public class LdapFastBindConnectionControl implements Control {

    private static final long serialVersionUID = 7847083714026112317L;

    public byte[] getEncodedValue() {
        return null;
    }

    public String getID() {
        return "1.2.840.113556.1.4.1781";
    }

    public boolean isCritical() {
        return true;
    }

}

+++++++++++++++++++++++++++++++++++++++++++++++++++

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.Control;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;

import org.apache.juddi.config.PersistenceManager;
import org.apache.juddi.model.Publisher;
import org.apache.juddi.model.UddiEntityPublisher;
import org.apache.juddi.v3.error.AuthenticationException;
import org.apache.juddi.v3.error.ErrorMessage;
import org.apache.juddi.v3.error.FatalErrorException;
import org.apache.juddi.v3.error.UnknownUserException;
import org.apache.log4j.Logger;

public class LdapFastBindAuthenticator implements Authenticator {

    private Logger log = Logger.getLogger(this.getClass());

    private Hashtable<String, String> env = null;
    private LdapContext ctx = null;
    private Control[] connCtls = null;

    public LdapFastBindAuthenticator(String url) throws NamingException {
        env = new Hashtable<String, String>();
        env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        env.put(Context.PROVIDER_URL, url); // organization ldap url,
example ldap://localhost:389

        connCtls = new Control[] { new LdapFastBindConnectionControl() };

        try {
            ctx = new InitialLdapContext(env, connCtls);
        } catch (NamingException e) {
            log.error("Naming exception " + e);
            throw e;
        }
    }

    public String authenticate(String authorizedName, String cred)
            throws AuthenticationException, FatalErrorException {
        if (authorizedName == null || "".equals(authorizedName)) {
            throw new UnknownUserException(new
ErrorMessage("errors.auth.NoPublisher", authorizedName));
        }

        boolean isLdapUser = false;
        try {
            ctx.addToEnvironment(Context.SECURITY_PRINCIPAL,
authorizedName);
            ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, cred);
            ctx.reconnect(connCtls);
            log.info(authorizedName + " is authenticated");

            /* if we don't want search ldap any further we set isLdap as
true, and skip the code between START HERE and END HERE */

            /* Here is possible to make some more extensive search in ldap
to see if the user is part of some group only allowed to access the
registry. */
            /* START HERE */
               //Create the search controls
            SearchControls searchCtls = new SearchControls();

            //Specify the search scope
            searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

            //specify the LDAP search filter
            String searchFilter = "(&(objectClass=user)(mail=
user@mydomain.com)(department=foo))";

            //Specify the Base for the search
            String searchBase = "DC=domain,DC=com";

            //initialize counter to total the group members
            int totalResults = 0;

            //Specify the attributes to return
            String returnedAtts[]={"memberOf"};
            searchCtls.setReturningAttributes(returnedAtts);

            //Search for objects using the filter
            NamingEnumeration<?> answer = ctx.search(searchBase,
searchFilter, searchCtls);

            //Loop through the search results
            while (answer.hasMoreElements()) {
                SearchResult sr = (SearchResult)answer.next();

                //Print out the groups
                Attributes attrs = sr.getAttributes();
                if (attrs != null) {
                    try {
                        for (NamingEnumeration<?> ae =
attrs.getAll();ae.hasMore();) {
                            Attribute attr = (Attribute)ae.next();
                            for (NamingEnumeration<?> e =
attr.getAll();e.hasMore();totalResults++) {
                                //System.out.println(" " +  totalResults +
". " +  e.next());

                                 String tmp = e.next().toString();
                                if
(tmp.equalsIgnoreCase("CN=Foo,OU=Bar,OU=Bleh,OU=Doh,DC=domain,DC=com")) {
                                    System.out.println(true);
                                    System.out.println("Authentication
Success!");
                                    isLdapUser = true;
                                    break;
                                } else if
(tmp.equalsIgnoreCase("CN=Foo,OU=Bar,OU=Bleh,OU=Doh,DC=domain,DC=com")) {
                                    System.out.println(true);
                                    System.out.println("Authentication
Success!");
                                    isLdapUser = true;
                                    break;
                                } else {
                                    continue;
                                }
                            }
                        }
                    } catch (NamingException e)    {
                        throw new UnknownUserException(new
ErrorMessage("errors.auth.NoPublisher", authorizedName));
                    }
                }
            }
            /* END HERE */
        } catch (NamingException e) {
            log.error(authorizedName + " is not authenticated");
            throw new UnknownUserException(new
ErrorMessage("errors.auth.NoPublisher", authorizedName));
        } finally {
            try {
                ctx.close();
            } catch (NamingException e) {
                log.error("Context close failure " + e);
            }
        }

        if (isLdapUser) {
            EntityManager em = PersistenceManager.getEntityManager();
            EntityTransaction tx = em.getTransaction();
            try {
                tx.begin();
                Publisher publisher = em.find(Publisher.class,
authorizedName);
                if (publisher == null) {
                    log.warn("Publisher was not found, adding the publisher
in on the fly.");
                    publisher = new Publisher();
                    publisher.setAuthorizedName(authorizedName);
                    publisher.setIsAdmin("false");
                    publisher.setIsEnabled("true");
                    publisher.setMaxBindingsPerService(199);
                    publisher.setMaxBusinesses(100);
                    publisher.setMaxServicesPerBusiness(100);
                    publisher.setMaxTmodels(100);
                    publisher.setPublisherName("Unknown");
                    em.persist(publisher);
                    tx.commit();
                }
            } finally {
                if (tx.isActive()) {
                    tx.rollback();
                }
                em.close();
            }
        } else {
            throw new UnknownUserException(new
ErrorMessage("errors.auth.NoPublisher", authorizedName));
        }
        return authorizedName;
    }

    public UddiEntityPublisher identify(String authInfo, String
authorizedName) throws AuthenticationException, FatalErrorException {
        EntityManager em = PersistenceManager.getEntityManager();
        EntityTransaction tx = em.getTransaction();
        try {
            tx.begin();
            Publisher publisher = em.find(Publisher.class, authorizedName);
            if (publisher == null)
                throw new UnknownUserException(new
ErrorMessage("errors.auth.NoPublisher", authorizedName));
            return publisher;
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
            em.close();
        }
    }
}

+++++++++++++++++++++++++++++++++++++++++++++++++++


Thanks.

-Gunnlaugur





On Wed, Apr 28, 2010 at 5:32 PM, Jeff Faath <jf...@apache.org> wrote:

>  Is this a compiler error or a runtime error?  Maybe if you tried to
> implement something in those methods where an exception was actually thrown?
>
>
>
> *From:* Gunnlaugur Sigurðsson [mailto:gunnlaugursig@gmail.com]
> *Sent:* Wednesday, April 28, 2010 10:05 AM
>
> *To:* juddi-user@ws.apache.org
> *Subject:* Re: Authenticator implementation
>
>
>
> Hi Jeff.
>
> I have a project I created in eclipse where I have the core juddi jar on
> the jave build path.
> Is there a better way for me to create the authenticator, than in my own
> project? Like within the juddi code bundle and build it there?
>
> Thanks.
>
> -Gunnlaugur
>
>
>
>  On Wed, Apr 28, 2010 at 2:51 PM, Jeff Faath <jf...@apache.org> wrote:
>
> Gunnlaugur,
>
>
>
> That error seems to be something  to do with the environment.  Is the core
> jUDDI jar in the classpath where the authenticator is being executed?
>
>
>
> -Jeff
>
>
>
> *From:* Gunnlaugur Sigurðsson [mailto:gunnlaugursig@gmail.com]
> *Sent:* Wednesday, April 28, 2010 5:12 AM
> *To:* juddi-user@ws.apache.org
> *Subject:* Authenticator implementation
>
>
>
> Hello.
>
> I'm implementing the Authenticator interface to authenticate users against
> Active Directory in my workplace.
>
> But I keep getting errors on the exceptions classes thrown by authenticate
> and identify functions.
>
> The following error comes up.
> No exception of type AuthenticationException can be thrown; an exception
> type must be a subclass of Throwable
>
> Same error occurs whit the FatalErrorException class.
>
>
> Here is my unimplemented JUDDIActiveDirectoryAuthhenticaton class.
>
> public class JUDDIActiveDirectoryAuthhenticaton implements Authenticator {
>
>     public String authenticate(String arg0, String arg1) throws
> AuthenticationException, FatalErrorException {
>
>         // TODO Auto-generated method stub
>         return null;
>     }
>
>     public UddiEntityPublisher identify(String arg0, String arg1) throws
> AuthenticationException, FatalErrorException {
>
>         // TODO Auto-generated method stub
>         return null;
>     }
> }
>
> Any idea why I get this error?
>
> Thanks.
>
> --
>
> Kveðja/Regards
> Gunnlaugur Sigurðsson
> gunnlaugursig@gmail.com
> Mobile: (+354) 896-7963
> Home: (+354) 565-5229
>
>
>
>
> --
>
> Kveðja/Regards
> Gunnlaugur Sigurðsson
> gunnlaugursig@gmail.com
> Mobile: (+354) 896-7963
> Home: (+354) 565-5229
>



-- 

Kveðja/Regards
Gunnlaugur Sigurðsson
gunnlaugursig@gmail.com
Mobile: (+354) 896-7963
Home: (+354) 565-5229

Re: Authenticator implementation

Posted by Gunnlaugur Sigurðsson <gu...@gmail.com>.
Hi Jeff.

This is a compiler error.
I'm putting this on hold while I get the web service self-registration
process working with Kurt's help.

But í have one question.
1) Off all the projects that come down when I checkout the code from
subversion, do I put my authentication implementation within juddi-core and
in the org.apache.juddi.v3.auth package?

Thanks.

-Gunnlaugur



On Wed, Apr 28, 2010 at 5:32 PM, Jeff Faath <jf...@apache.org> wrote:

>  Is this a compiler error or a runtime error?  Maybe if you tried to
> implement something in those methods where an exception was actually thrown?
>
>
>
> *From:* Gunnlaugur Sigurðsson [mailto:gunnlaugursig@gmail.com]
> *Sent:* Wednesday, April 28, 2010 10:05 AM
>
> *To:* juddi-user@ws.apache.org
> *Subject:* Re: Authenticator implementation
>
>
>
> Hi Jeff.
>
> I have a project I created in eclipse where I have the core juddi jar on
> the jave build path.
> Is there a better way for me to create the authenticator, than in my own
> project? Like within the juddi code bundle and build it there?
>
> Thanks.
>
> -Gunnlaugur
>
>
>
>  On Wed, Apr 28, 2010 at 2:51 PM, Jeff Faath <jf...@apache.org> wrote:
>
> Gunnlaugur,
>
>
>
> That error seems to be something  to do with the environment.  Is the core
> jUDDI jar in the classpath where the authenticator is being executed?
>
>
>
> -Jeff
>
>
>
> *From:* Gunnlaugur Sigurðsson [mailto:gunnlaugursig@gmail.com]
> *Sent:* Wednesday, April 28, 2010 5:12 AM
> *To:* juddi-user@ws.apache.org
> *Subject:* Authenticator implementation
>
>
>
> Hello.
>
> I'm implementing the Authenticator interface to authenticate users against
> Active Directory in my workplace.
>
> But I keep getting errors on the exceptions classes thrown by authenticate
> and identify functions.
>
> The following error comes up.
> No exception of type AuthenticationException can be thrown; an exception
> type must be a subclass of Throwable
>
> Same error occurs whit the FatalErrorException class.
>
>
> Here is my unimplemented JUDDIActiveDirectoryAuthhenticaton class.
>
> public class JUDDIActiveDirectoryAuthhenticaton implements Authenticator {
>
>     public String authenticate(String arg0, String arg1) throws
> AuthenticationException, FatalErrorException {
>
>         // TODO Auto-generated method stub
>         return null;
>     }
>
>     public UddiEntityPublisher identify(String arg0, String arg1) throws
> AuthenticationException, FatalErrorException {
>
>         // TODO Auto-generated method stub
>         return null;
>     }
> }
>
> Any idea why I get this error?
>
> Thanks.
>
> --
>
> Kveðja/Regards
> Gunnlaugur Sigurðsson
> gunnlaugursig@gmail.com
> Mobile: (+354) 896-7963
> Home: (+354) 565-5229
>
>
>
>
> --
>
> Kveðja/Regards
> Gunnlaugur Sigurðsson
> gunnlaugursig@gmail.com
> Mobile: (+354) 896-7963
> Home: (+354) 565-5229
>



-- 

Kveðja/Regards
Gunnlaugur Sigurðsson
gunnlaugursig@gmail.com
Mobile: (+354) 896-7963
Home: (+354) 565-5229

RE: Authenticator implementation

Posted by Jeff Faath <jf...@apache.org>.
Is this a compiler error or a runtime error?  Maybe if you tried to implement something in those methods where an exception was actually thrown?

 

From: Gunnlaugur Sigurðsson [mailto:gunnlaugursig@gmail.com] 
Sent: Wednesday, April 28, 2010 10:05 AM
To: juddi-user@ws.apache.org
Subject: Re: Authenticator implementation

 

Hi Jeff.

I have a project I created in eclipse where I have the core juddi jar on the jave build path.
Is there a better way for me to create the authenticator, than in my own project? Like within the juddi code bundle and build it there?

Thanks.

-Gunnlaugur





On Wed, Apr 28, 2010 at 2:51 PM, Jeff Faath <jf...@apache.org> wrote:

Gunnlaugur,

 

That error seems to be something  to do with the environment.  Is the core jUDDI jar in the classpath where the authenticator is being executed?

 

-Jeff

 

From: Gunnlaugur Sigurðsson [mailto:gunnlaugursig@gmail.com] 
Sent: Wednesday, April 28, 2010 5:12 AM
To: juddi-user@ws.apache.org
Subject: Authenticator implementation

 

Hello.

I'm implementing the Authenticator interface to authenticate users against Active Directory in my workplace.

But I keep getting errors on the exceptions classes thrown by authenticate and identify functions.

The following error comes up.
No exception of type AuthenticationException can be thrown; an exception type must be a subclass of Throwable

Same error occurs whit the FatalErrorException class.


Here is my unimplemented JUDDIActiveDirectoryAuthhenticaton class.

public class JUDDIActiveDirectoryAuthhenticaton implements Authenticator {

    public String authenticate(String arg0, String arg1) throws AuthenticationException, FatalErrorException {
        
        // TODO Auto-generated method stub
        return null;
    }

    public UddiEntityPublisher identify(String arg0, String arg1) throws AuthenticationException, FatalErrorException {

        // TODO Auto-generated method stub
        return null;
    }
}

Any idea why I get this error?

Thanks.

-- 

Kveðja/Regards
Gunnlaugur Sigurðsson
gunnlaugursig@gmail.com
Mobile: (+354) 896-7963
Home: (+354) 565-5229




-- 

Kveðja/Regards
Gunnlaugur Sigurðsson
gunnlaugursig@gmail.com
Mobile: (+354) 896-7963
Home: (+354) 565-5229


Re: Authenticator implementation

Posted by Gunnlaugur Sigurðsson <gu...@gmail.com>.
Hi Jeff.

I have a project I created in eclipse where I have the core juddi jar on the
jave build path.
Is there a better way for me to create the authenticator, than in my own
project? Like within the juddi code bundle and build it there?

Thanks.

-Gunnlaugur




On Wed, Apr 28, 2010 at 2:51 PM, Jeff Faath <jf...@apache.org> wrote:

>  Gunnlaugur,
>
>
>
> That error seems to be something  to do with the environment.  Is the core
> jUDDI jar in the classpath where the authenticator is being executed?
>
>
>
> -Jeff
>
>
>
> *From:* Gunnlaugur Sigurðsson [mailto:gunnlaugursig@gmail.com]
> *Sent:* Wednesday, April 28, 2010 5:12 AM
> *To:* juddi-user@ws.apache.org
> *Subject:* Authenticator implementation
>
>
>
> Hello.
>
> I'm implementing the Authenticator interface to authenticate users against
> Active Directory in my workplace.
>
> But I keep getting errors on the exceptions classes thrown by authenticate
> and identify functions.
>
> The following error comes up.
> No exception of type AuthenticationException can be thrown; an exception
> type must be a subclass of Throwable
>
> Same error occurs whit the FatalErrorException class.
>
>
> Here is my unimplemented JUDDIActiveDirectoryAuthhenticaton class.
>
> public class JUDDIActiveDirectoryAuthhenticaton implements Authenticator {
>
>     public String authenticate(String arg0, String arg1) throws
> AuthenticationException, FatalErrorException {
>
>         // TODO Auto-generated method stub
>         return null;
>     }
>
>     public UddiEntityPublisher identify(String arg0, String arg1) throws
> AuthenticationException, FatalErrorException {
>
>         // TODO Auto-generated method stub
>         return null;
>     }
> }
>
> Any idea why I get this error?
>
> Thanks.
>
> --
>
> Kveðja/Regards
> Gunnlaugur Sigurðsson
> gunnlaugursig@gmail.com
> Mobile: (+354) 896-7963
> Home: (+354) 565-5229
>



-- 

Kveðja/Regards
Gunnlaugur Sigurðsson
gunnlaugursig@gmail.com
Mobile: (+354) 896-7963
Home: (+354) 565-5229

RE: Authenticator implementation

Posted by Jeff Faath <jf...@apache.org>.
Gunnlaugur,

 

That error seems to be something  to do with the environment.  Is the core jUDDI jar in the classpath where the authenticator is being executed?

 

-Jeff

 

From: Gunnlaugur Sigurðsson [mailto:gunnlaugursig@gmail.com] 
Sent: Wednesday, April 28, 2010 5:12 AM
To: juddi-user@ws.apache.org
Subject: Authenticator implementation

 

Hello.

I'm implementing the Authenticator interface to authenticate users against Active Directory in my workplace.

But I keep getting errors on the exceptions classes thrown by authenticate and identify functions.

The following error comes up.
No exception of type AuthenticationException can be thrown; an exception type must be a subclass of Throwable

Same error occurs whit the FatalErrorException class.


Here is my unimplemented JUDDIActiveDirectoryAuthhenticaton class.

public class JUDDIActiveDirectoryAuthhenticaton implements Authenticator {

    public String authenticate(String arg0, String arg1) throws AuthenticationException, FatalErrorException {
        
        // TODO Auto-generated method stub
        return null;
    }

    public UddiEntityPublisher identify(String arg0, String arg1) throws AuthenticationException, FatalErrorException {

        // TODO Auto-generated method stub
        return null;
    }
}

Any idea why I get this error?

Thanks.

-- 

Kveðja/Regards
Gunnlaugur Sigurðsson
gunnlaugursig@gmail.com
Mobile: (+354) 896-7963
Home: (+354) 565-5229