Products

Solutions

Resources

Partners

Community

Blog

About

QA

Ideas Test

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeDNN Open Source...DNN Open Source...Provider and Extension ForumsProvider and Extension ForumsAuthenticationAuthenticationAD Fixes - Post YourAD Fixes - Post Your's Here
Previous
 
Next
New Post
2/24/2009 11:43 AM
 

I understand where you're coming from but it's a two edged sword. A lot of network admins don't like outside applications changing the user objects in the AD. They view it as a security risk.

Now onto your summarization. The AD provider is a "plug-in" for DNN just as any other provider would be. A lot of the DNN core code checks roles and user info to verify that the user has permission to do something or to pull stats. Because of this their has to be an account in DNN for the user. To do otherwise would require the whole core code to be re-written to account for every possible provider out there and then rewritten for any new providers that are created. It's much easier to conform a provider to work with DNN then DNN to work with a provider.

As for point #2 see my first paragraph.

 
New Post
2/26/2009 10:05 AM
 

Mike Horton wrote

I understand where you're coming from but it's a two edged sword. A lot of network admins don't like outside applications changing the user objects in the AD. They view it as a security risk.

Of course I am not underestimating security risks for organizations possesing sensitive data. However this sometimes comes to philosophical assumpion to trust some application or not to trust  The whole microsoft itself is an application  however a lot of enterprises trusts them... If application is secure, robust and reliable, why not to trust it? Anyway I agree that security is a major concern in this case.

Mike Horton wrote

Now onto your summarization. The AD provider is a "plug-in" for DNN just as any other provider would be. A lot of the DNN core code checks roles and user info to verify that the user has permission to do something or to pull stats. Because of this their has to be an account in DNN for the user. To do otherwise would require the whole core code to be re-written to account for every possible provider out there and then rewritten for any new providers that are created. It's much easier to conform a provider to work with DNN then DNN to work with a provider.

As for point #2 see my first paragraph.

If thats the architecture of DNN, then it is realy hard to change anything, while not rewriting everything Anyway good job on the provider as it is now and good luck improoving it

Cheers

Benediktas

 
New Post
10/21/2009 4:05 PM
 

michael1047 wrote 

I found that it is nearly impossible to connect to an external ldap provider.  For instance, I have a DNN instance that I want to connect to a separate AD/LDAP source outside the domain that DNN is installed. (the DNN server is in a DMZ, and the AD server goes through a special port to our AD server which contains the private AD server.)

 EDIT: I Took the easy way out and employed a 3rd party module so I guess I'm all set. Would have liked to use the core provider though. Maybe next time

This is exactly the same as my set up, I am running 5.1.4 and loaded AD provider 5.0.2. I have had no luck getting it to go. Should I give up or is there a way?
Thanks
Mike


Michael Emond
City of Manchester NH
www.manchesternh.gov
 
New Post
12/1/2009 10:00 AM
 

Hey Mike,

I thought I would breathe new life into a dead thread. I work for a company that is several thousand users across the entire USA and has offices in parts of GB and AU. Our problem with the module was mostly scalability. We even purchased support from DNN and the ball got dropped by you guys. So left to my own devices we developed our own plan.

There are more than 80 groups in our AD that are sync'd with DNN roles. The problem is that the way the code is written, the provider hits the AD for each specific role to see if the user belongs to that AD group as it builds the users permissions during login. So multiply that time 2800+ users, and the "Upgrade" crushed our global catalog server. And believe me our network is SOTA - think APC InfraStruXure with quad AC Units. Our guys are among the best there is. So network issues are really out of the question.

Actually it was worse than that. We literally have over 8000 organizational units in our AD and the AD is only 3 levels deep. The AD provider "out of the box" was hitting the AD an average of 13 times per user - some more some less. The authentication was taking upwards of 11 seconds per user in controlled testing. Come to find out that everyone combined was hitting the AD somewhere in the neighborhood of 36400 times (average) just to see our homepage... No wonder our GC server was getting crushed.

So how did we fix it? We created a table called Roles_ActiveDirectory with a single column RoleID. Then I changed the AD provider code to look at the table for the 80 odd roles that we need to synchronize. The provider now hits the AD 3 times per user. 1 time to authenticate, 1 time to enter the authorization code, and 1 time to pull all the AD roles and build them into a generic list of AD entities for the user.

The rest of the code loops through a list of Roles from my new table, and compares them to what the user is supposed to have. On a match, it adds the user to the role if they don't already exist, and removes them from the role on a mismatch.

Then I augmented the rest of the functions that needed the AD roles by adding the generic list as an argument. Now instead of hitting the AD, I hit a database table and our scalability problems are a thing of the past.

I built two dlls. One for Debug and one for Release. The debug version generates an Authentication Log on the webroot when the site is placed into Debug mode. It is useful to see how the roles are being added, and how long it takes to authenticate and authorize each user.

The load times went from upward of 11 seconds down to about 500 milliseconds.

I have been thinking of adding a SyncADRole checkbox to the Roles list and edit screens to manage my new table, but for now since we only add roles and so on a couple times a year, I just manage it with SQL Management Studio.

I hope this helps someone.

We are still not without our problems see my next post, but this works perfectly for the most part.


Cheers!
John Valentine
http://www.webinnovationsystems.com
 
New Post
12/2/2009 9:20 PM
 

Thanks for the post John. Synchronization has be a craw in my backside since I took over the provider code a few years ago (has it already been that long??). As for DNN Support dropping the ball.... well.... don't be too hard on them (I say them because I'm not a paid employee of the Corp and any of the work I do is volunteer). I've had numerous MSN conversations with the core architects when they were handling calls relating to the AD provider such as yours. One problem that they had is that they didn't have an AD environment to test against (that may have changed now). An even if they did, like me, they didn't have an environment where multiple user's were hitting the site at the same time.

That said, one of the other core members (Stefan Cullman), is in a large AD environment and he's come up with a much streamlined solution which will be part of the next release of the provider (you can download the source code from codeplex (http://dnnauthad.codeplex.com).

Can you connect with me offline (mhorton@telus.net) as I'd be interested in talking to you about some of your testing procedures that you used in coming up with your solution. Anything that I can apply to my small AD usage that can help me get the provider working for large scale enterprises such as yours would be beneficial.

 
Previous
 
Next
HomeHomeDNN Open Source...DNN Open Source...Provider and Extension ForumsProvider and Extension ForumsAuthenticationAuthenticationAD Fixes - Post YourAD Fixes - Post Your's Here


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out