LDAP Server Updates and Event Notifications - java

Is it possible to receive object content change events from an LDAP server? Basically, I'm searching for a solution to integrate light weight directory services with our software via JNDI to setup active directory synchronization. (i.e. I'd like for the consumer application to be notified when a new entry is made or an object state has changed)
Below are a few possibilities I've came up with so far:
Enable auditing policy on directory objects and register a listener to read incoming changes from the change log.
Implement persistent search against the directory.
Mechanism to poll the directory for changes.
Could someone with more intimate knowledge of LDAP care recommending an optimal approach to a novice person like me?
Thanks in advance!

I'm not an ultimate expert on the topic, but I've had very similar requirements in my previous project, and made a thorough research on possible ways to implement synchronization from Active Directory. As far as I know, there is no other solution than the three options you listed above.
I think the third option is the most viable in most of the cases. It's not very difficult to implement the polling logic yourself, but you might be interested in a small java library that already does most of the hard work. It can help you getting started with change tracking in Active Directory very quickly.
Check it out here: https://github.com/zagyi/adsync4j
Disclaimer: I'm the author of the library and would love to get some feedback if you end up making use of it.

Your best bet with Microsoft Active Directory is to implement the DirSync Control.
Not sure of code in JNDI to implement DirSync Control but I know there is an implementation with UNBOUNDID LDAP SDK.
-jim

Related

are there some more opendolphin examples that I am missing?

I am experimenting with OpenDolphin after a while of being interested in it's concept,
I am at the defining requirements phase with some friends for a project we want to make with hopes of earning some money from it this project's concept will be based on a server/multiple-client model where we want the server to have most of the logic, we have average to little experience couple of years each doing java projects but not anything big or exactly with the latests tools, so we struggled a little bit understanding the building process of the gradle setup, and after running this project, we are now faced with tons of groovy projects demos.
And I am struggling to keep my friends interested in the library as they think using what we know best is a better option than trying to understand a library that would mean to learn asap a new language
(we are not that lazy but there is some people that is helping us as consultants/associates and we are afraid that if we dont start producing something we are gonna lose their support [we are not earning anything from this yet but without them as "productowners", we wouldnt know what are exactly the market needs]).
I have watched multiple videos and videos like this: http://www.youtube.com/watch?v=z54hEJvpZys
are amazing , I think that is exactly what we need.
I would like to know if maybe there is an example/tutorial in java maybe a screencast,blog or recorded webinar of how to make a simple application where the server binds to a port and multiple java clients update the value and sends a pair of commands.
I dont know something like server starts, puts a default value in a variable, client connects and sees value, second client connects sees value, and a command is sent to server "erase", and both clients see that the server erased it and another command is sent "default" and server sets variable to default.
I am not asking for that exact example but something that I can read to make it like that.
I tried making something like that using the .8 release and I was utterly lost, but i think that an easy example like that could help me to make them see how good of a tool this is,
"Install this in your laptop, that's the server run it and see how my client and yours are synched automagically".
Ok, you made a good choice of technologies :-)
It appears that the Dolphin JumpStart project (https://github.com/canoo/DolphinJumpStart) covers exactly that combination: OpenDolphin with Java, view in JavaFX, built with Gradle (use dist/jumpstart-gradle.zip) and jetty as the minimal server implementation.
The Jumpstart project is also explained in a step-by-step fashion as part of the OpenDolphin user guide (http://open-dolphin.org/download/guide/guide/howto.html).
Concerning your question about the shared tacho demo: this demo is using only one server that all clients connect to. The "clients" update each other over the server-side event bus. To that end, we do not open any specific sockets. It is all plain HTTP POST that goes trough all proxies and firewalls and needs no special infrastructure.
your concerns are very understandable.
First let me clarify that you can use Java, Groovy, JavaScript or any other language that runs on the JVM with OpenDolphin. What would be your preferred language for a demo?
For a demo that shows many clients that share a common value, I would recommend the SharedTachoDemo.
As for making the build setup easier, we do have to make choices in the demos since there are so many combinations of build system (ant, maven, gradle), structure (all-in-one, multi-project), implementation language, IDE integration (intellij, netbeans, eclipse), server infrastructure (jetty, tomcat, grails, glassfish, jboss, weblogic, webshpere, ...), and last not least the intended UI toolkit (Swing, JavaFX, HTML5, others). If you tell me your preferred combination, I can point you to the respective resource or create one for you.
cheers, Dierk

How can I perform connectionless ldap call using Java?

In order to work with AD's Global Catalog from a Java program , I am required to perform a CLDap (Connectionless ldap) call from my Java program.
I am looking for some open source to perform this task, but in vain.
Has someone experienced creating CLDAP connection in Java and can help around?
Many thanks
Zaske
Surprising requirement. CLDAP was moved to 'historic status' in 2003, see RFC 3352. Based on that, (a) I doubt you will ever see a Java API for it, and (b) I would just use LDAP over TCP: it will work at least as well. See also here where its removal from OpenLDAP is discussed.

Java authentication/authorization server

I've been thrown in at the deep end a bit here, as I never expected I would have to do something like this and I have no idea where to start; so I'm helping somebody will be able to help me (ideally by providing some java code)...
In my effort to protect my Java software from piracy I have found that it is completely impossible unless I continusely check online - so thats what I want to do. Only, the only details I know are that, my program needs to communicate with some sort of script online and verify the licence key the program is using and then report back accordingly.
However, that's all I know - I am still stuck as to what the server side actually consists of. I'm hoping that the fact I am not hosting the website myself (an using JustHost) will not stop me from being able to do what I need.
So basically, I would like some help in creating a setup that allows my prevent anyone from pirating my software while connected to the internet. I though about having something like a login system; the users licence key would act as a username and password, but to be honest I really have no idea because if I did it that way would have to manually login and logout each time they wanted to use the software.
And not to run before I can walk but what happens when the user is not connected to internet? Even worse, how do I tell if somebody has stealed an legitamate users licence key? etc.
Thanks in Advance,
Andy
PS If it helps, I plan to use PostgreSQL (or maybe MySQL) and I am not paying for a dedicated server with JustHost.com...
Once your code is on their machine they can modify to simply ignore your checks. You can make it as hard as possible but it will never be hack proof.
In general your question is identical to this one which has some good discussion.
Try to delegate part of your business logic to server side. This way some core processes can not complete unless the application license is valid. Of course, if you have some logic that can be delegated. If your application is client-only than this approach is a bad choice.
If your application will be sold for a lot of money, try implementing solution using HASP key approach (which is investment by itself) instead of server authentication I understand this is not what you asked, I am just giving another idea.
try to create security by obfuscation/encryption and you will fail if your application becomes popular, since there will always be someone who will crack it in 5 minutes :(

Best solution architecture for user notifications in Java/Grails environment?

I am building a community website using Grails and I want to implement user notifications exactly like stackoverflow.com. For instance, user will get notified for new events ('You have new comments', 'one of your favorite has changed'...) either by email or in his mailbox anytime he returns to the website.
I suppose that this is a common problem and I'd like to hear what easy solution do you advice for implementing the back-end in Grails realm. For instance, is Java Message Service a recommended solution for this?
Thank you.
IMHO no. Java Message Service is basically to perform asynchronous or queued operations.
You just need a user messaging system and notification. I'm not aware of any plugin that could do it out of the box.
I suggest you to implement your own Message domain POGO bound to your user model with a markAsRead flag.
If you want to integrate this with email you can use JMS to decouple user navigation and email/sending. This is particularly useful if you have an high traffic website/webapp
Looks like there's a plugin for that which also uses the Grails mail plugin:
http://grails.org/plugin/notifications
http://grails.org/plugin/mail
I have used the http://grails.org/plugin/mail and the background-thread plugin. Not a "perfect" solution, but it leverages the grails eco-system and gets the job done.

Where can I find an AS400 to Java interface?

Does anyone have links and resources to connect to an AS400 from Java?
I remember years ago, somebody told me about a connector that simulates KeyStrokes from the keyboard and other "purest" approach that connected directly.
On the web I have found a lot of links, but I cannot find a complete product to do this (I am probably not using the right keywords).
EDIT
Thanks for the answers:
What we are looking for is a way to access the data inside the AS400 and/or the screens it uses and expose them for other new applications re-use. Either as a webservice of some sort, or directly through Java ( and java will expose the operations using webservices )
Thanks in advance.
EDIT
As per MicSim post, I've also found this link:
http://www.ibm.com/developerworks/library/ws-as400/index.html
What you are looking for is probably the Toolbox for Java™ & JTOpen from IBM. There is also an AS400 class in the toolbox for performing specific AS400 tasks. You can look here and here for more details. Just googled it and hope it's helpful.
IBM's 5250 screen-scraping technology was "WebFacing" - I would post a link but you're probably better off Googling it, since IBM's documentation is so scattered. There are other technologies available too but: Screen-scraping was never anyone's favourite since typically you end up with something which, although it looks more up-to-date, actually is harder to use than a green screen and no more functional. The 5250 is probably the single best data entry platform I've ever used - web forms in a browser are one of the worst.
As mentioned, jt400 is the way to go for most other things. In particular:
JDBC - for all things SQL. If you do it right and address your files as though they really are tables, it's a way to get away from the 400 entirely.
Record-level access - write Java programs using a similar database API to RPGLE (all those chains, setlls that 400 programmers love)
Call programs, system commands, manage resources (data queues, data areas, prints / spools, jobs etc etc)
Good luck
If you just want to run Java on the AS/400 (or iSeries, or System i, or whatever IBM's marketing department has decided to call it this month), that's a supported language. You can access the pseudo-DB2 database directly. Or are you after some other form of integration?
This obviously depends on what you want to do, however if you want to simulate keystrokes across a network connection to an AS400 process then Expect4j may be the library you are looking for.
This is generally a really nasty hack though and there are frequently better ways to achieve your goals. What are you trying to do?
The expect4J library can be found here. Expect was originally a unix command that allowed you to specify a string that you are expecting to see and then a string of characters to return. It was frequently used for automating logins etc and for screen-scraping applications.
Even better is the TN5250j Console, which can be used to extract data from the AS/400.
jacada makes tools to do what your looking for
http://www.jacada.com/

Categories

Resources