Sunday, January 2, 2011

Spring Security - MVC: Using an LDAP Authentication Provider

In this tutorial we will setup a simple Spring MVC 3 application, secured by Spring Security. Our users will be authenticated against an LDAP provider. We'll explore how we can configure an LDAP authentication provider. For this tutorial we will leveraged on our existing tutorials to lessen the repetition of steps. The overall structure of our application will be based on Spring Security 3 - MVC: Using a Simple User-Service Tutorial. This is a good exercise to show how easy we can change providers without disrupting the whole flow of our existing system. The LDAP server and entries will be based on LDAP - Apache Directory Studio: A Basic Tutorial

What is LDAP?
The Lightweight Directory Access Protocol (LDAP) is an application protocol for reading and editing directories over an IP network. A directory is an organized set of records. For example, the telephone directory is an alphabetical list of persons and organizations, with each record having an address and phone number. A directory information tree often follows political, geographic, or organizational boundaries. LDAP directories often use Domain Name System (DNS) names for the highest levels. Deeper inside the directory might appear entries for people, departments, teams, printers, and documents.

Source: http://en.wikipedia.org/wiki/LDAP
If this is your first time to LDAP, you might be wondering how is this different from an RDBMS. I suggest my readers to visit the following article Should I Use a Directory, a Database, or Both?

We'll start immediately with the spring-security.xml configuration.

spring-security.xml

Honestly, this is the only file that you need to change from the Spring Security 3 - MVC: Using a Simple User-Service Tutorial.

Actually, we just deleted a couple of entries. The old configuraiton contains an in-memory user-service provider:

The new configuration contains an LDAP authentication provider:

The real tricky part here is ensuring that you can connect to your LDAP server and ensuring that you've mapped correctly the attribute names from your ldap-authentication-provider to the LDAP Directory Information Tree.

To get a better understanding, let's examine the directory structure of the server. You will gain better insight if you've read first LDAP - Apache Directory Studio: A Basic Tutorial.

Here's server's structure:
mojo
 |
 |--groups
 |    |
 |    |--Admin
 |    |--User
 |
 |--users
      |
      |--guy1
      |--guy2
      |--guy3
      |--guy4
Here's a screenshot of the server's directory:

Let's focus on the elements of the ldap-authentication-provider

The attribute value of the user-search-filter="(uid={0})" corresponds to the attribute we've declared for the users
The {0} in the (uid={0}) will be replaced by the username entered in the form.

The value of the user-search-base="ou=users" corresponds to the attribute we've declared in the directory tree

The attribute value of the group-search-filter="(uniqueMember={0})" corresponds to the attribute we've declared for the groups
The {0} in the (uniqueMember={0}) represents the Distinguished Name (DN) of the user. On our sample data, the dn for Hugo Williams is cn=Hugo Williams,ou=users,o=mojo. The DN is similar with the primary key in relational databases.

The value of the group-search-base="ou=groups" corresponds to the attribute we've declared in the directory tree

The attribute value of the group-role-attribute="cn" corresponds to the attribute we've declared for the groups. Spring Security uses this value of this attribute to determine the authorization level of the user.

The value of the role-prefix="ROLE_" is used to indicate what prefix should be added on the values received from group-role-attribute="cn". If you examine carefully the server's structure, we have two roles declared as cn=Admin and cn=User
The values that will be returned are Admin and User. With role-prefix="ROLE_", they will become ROLE_ADMIN and ROLE_USER respectively.

The LDAP Server
Let's examine ldap-server tag.


The url ldap://localhost:10389/o=mojo is composed of the server's url and port number ldap://localhost:10389/ and the base parent path o=mojo

The attribute manager-dn="uid=admin,ou=system" is based on the Distinguished Name of the admin. Normally, you will be provided by your administrator with a custom access, but for this tutorial we're relying on the default values to make things simple.

That's it. We've setup a simple Spring MVC 3 application, secured by Spring Security. Our users are authenticated against an LDAP provider. We've also explored how the various attributes map to an existing directory structure. This also means we can customize our mappings and assign different attribute names.

The best way to learn further is to try the actual application.

Download the project
You can access the project site at Google's Project Hosting at http://code.google.com/p/spring-security-ldap/

You can download the project as a Maven build. Look for the spring-security-ldap.zip in the Download sections.

You can run the project directly using an embedded server via Maven.
For Tomcat: mvn tomcat:run
For Jetty: mvn jetty:run
StumpleUpon DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google I'm reading: Spring Security - MVC: Using an LDAP Authentication Provider ~ Twitter FaceBook

Subscribe by reader Subscribe by email Share

295 comments:

  1. hi, thank you about this article. can you demo to authenticate user data from mysql database by using hibernate.

    ReplyDelete
  2. @kanjon, this should be simple enough. If you look on the Spring 3 MVC - Hibernate 3: Using Annotations Integration Tutorial at http://krams915.blogspot.com/2010/12/spring-3-mvc-hibernate-3-using.html. All you need to do is edit the properties file and the hibernate language to MySQL. I'm gonna try making a demo for that. Thanks :)

    ReplyDelete
    Replies
    1. Thanks so much for your excellent doc. It's really helpful ...

      Cheers,
      HQ

      Delete
  3. Nice post but the download repo is empty

    ReplyDelete
  4. Hi, I ran the project via Maven on Tomcat, the log suggests it deployed correctly (no errors) but all I see is a 404 when I browse to http://localhost:8080/spring-security-ldap. What could I be doing wrong?

    ReplyDelete
  5. My apologies, I didn't realise I had to browse to http://localhost:8080/spring-security-ldap/krams/auth/login. Thanks for the tutorial.

    ReplyDelete
    Replies
    1. Thank you! I was having the same issue! Then I decided since I don't know that much about where to point to for webapps I decided to gasp, read the comments.

      Delete
    2. Same here...I am trying to make changes and modified web.xml and all the paths by deleting krams. so I assume http://localhost:8080/spring-security-ldap/auth/login should work the same way, but for some reason I get 404 error.

      Delete
  6. Good Article. But most of the time, You want to authenticate to the LDAP with out manager-dn user/password. Here it assumes you have the manager-dn password. Could you please give an example which just authenticates the LDAP and also how to write our own implementation of assigning a role. something like overriding like and I can map my own role for a given user. This is more practical for most if us.

    Vam

    ReplyDelete
  7. Nice article. Could you please provide an example of how to authenticate a login user against Active Directory using LDAP protocol and assign the roles dynamically from database with out having to map the roles in XML configuration. Is it possible? Could you please guide me, I am new to Spring Security...

    ReplyDelete
  8. This is simply best and most detailed article man. I just need to authenticate instead of authorization can I remove group search filter and other stuff ?

    ReplyDelete
  9. One major point to note while authenticating against active directory is that it doesn't 't handle referral and you will get PartialResultException: Unprocessed Continuation Reference(s), to avoid this problem setIgnorePartialResultException(true), check Ldap authentication using spring security example for more details.Also I suggest using spring security framework for ldap authentication.

    ReplyDelete
  10. I am using net-beans 7.0.1 with glass-fish When i run the programme it provide an exception like below(I have copy and paste a part of that exception )

    If you are using LDAP with Spring Security, please ensure that you include the spring-ldap jar file in your application

    ReplyDelete
  11. Hi,
    Will you be able to post a tutorial about SSO with CAS and LDAP?

    Thanks

    ReplyDelete
  12. amazing tutorial ..... helped me allow users of certain roles to be authenticated to a url.

    ReplyDelete
  13. hi krams
    how can we authenticate a user in spring mvc.
    in a special application there is a sha512 password encoding +custom password encoding and that password is inserted to database.
    On user login the password has to convert to that old password encoding and validate with those in database.
    in applicationcontex-security.xml










    the CustomUserDetailsService class implements AuthenticationProvider its getting the password we typing in password field ,i converted this password with passwordencoding ,now i need to authenticate with database and logged in.so what things i need to do extra in the customclass to validate with custompassword.

    please help me
    thanks in advance

    ReplyDelete
  14. Hi krams,

    Thanks for amazing tutorial. LDAP can also store some user specific information. e.g. Phone Number. Can you please let me know how to retieve this information for logged in user.

    Thanks
    Shirish

    ReplyDelete
  15. Very very helpfull tutorial, TKS very much, but....if I want to get the roles from a database after login, what I need to set in the security:ldap-authentication-provider tag to it access my class, and what I need to return in the class? Have you an example?

    ReplyDelete
  16. Krams. You are awesome. That concludes this message.

    ReplyDelete
  17. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
  18. what is the user name and password

    ReplyDelete
  19. great tutorial. Very straight forward. But I'm having an error when executing mvn jetty:run

    2012-08-16 21:54:08.963:/spring-security-ldap-embedded:INFO: Initializing Spring root WebApplicationContext
    [ERROR] [main 09:54:12] (DefaultAttributeTypeRegistry.java:lookup:192) attributeType w/ OID 2.5.4.16 not registered!
    [ERROR] [main 09:54:14] (ApacheDSContainer.java:start:180) Failed to create dc entry
    java.lang.IllegalArgumentException: [Assertion failed] - this expression must be true
    at org.springframework.util.Assert.isTrue(Assert.java:65)

    ReplyDelete
    Replies
    1. Hi Warner, I get the same error. Could you figure out the fix for this?

      Delete
  20. Hi Krams,

    The example is really good. But I am facing a problem. In my example the authentication is happening successfully but authorization means the ROLE_ + String retreived from LDAP group is not working fine I quess. Thats why even though I am having correct users and groups it is always going to accessDenied page...

    ReplyDelete
  21. Ele ejemplo esta muy bueno pero al levantarlo en tomcat me arroja un error 404 al desplegar que haria para probar el proyecto a la perfeccion

    ReplyDelete
  22. thanks for ur tutorial ..., same as how we can apply the cache to the application same spring-ldap...
    its really help for me

    ReplyDelete
  23. excellent material for beginners..

    ReplyDelete
    Replies
    1. what is username/password for this application

      Delete
  24. The example is really good. But I am facing a problem. In my example the authentication is happening successfully but authorization means the ROLE_ + String retreived from LDAP group is not working fine I quess. Thats why even though I am having correct users and groups it is always going to accessDenied page...

    ReplyDelete
  25. Hi ,

    In the debug mode , i got this ,

    Got LDAP context on server ldap://testldap:389/dc=ab,dc=cd,dc=ef

    also
    searching forSearching for user 'xxxxx', with user search [ searchFilter: '(&(o
    ry=Person)(sAMAccountName={0}))', searchBase: 'DC=ab,DC=cd,DC=ef',scope: subtree, searchTimeLimit: 0, derefLinkFlag: false ]

    i am not able to authenticate still...

    what could be the error ?Please help..

    ReplyDelete
  26. Hi ,

    In the debug mode , i got this ,

    Got LDAP context on server ldap://testldap:389/dc=ab,dc=cd,dc=ef

    also
    searching forSearching for user 'xxxxx', with user search [ searchFilter: '(&(objectCategory=Person)(sAMAccountName={0}))', searchBase: 'DC=ab,DC=cd,DC=ef',scope: subtree, searchTimeLimit: 0, derefLinkFlag: false ]

    i am not able to authenticate stil...

    what could be the error ?Please help..

    ReplyDelete
  27. hi i m adarsh
    i m getting this exception
    [ERROR] [Scanner-2 09:36:38] (DefaultAttributeTypeRegistry.java:lookup:192) attributeType w/ OID 2.5.4.16 not registered!
    [ERROR] [Scanner-2 09:36:39] (ApacheDSContainer.java:start:182) Failed to create dc entry
    java.lang.IllegalArgumentException: [Assertion failed] - this expression must be true

    plz any one can let me know where i m wrong .

    ReplyDelete
    Replies
    1. Hi Adarsh, I get the same error. Could you figure out the fix for this?

      Delete
  28. Hi, how can one reference an odjectClass in authentication manager?

    ReplyDelete
  29. Hi,
    Great article however I would like to know how in the ldap server I could give a specific user permissions and then use it in the Spring security. for example 'view_all_mails' permissions or 'delete_mail' permission

    ReplyDelete
  30. Hi,

    I deployed code in tomcat t.i am getting error. java.lang.Noclass found error. org/springframework/core/envEnvoirnmentCapble.

    I add spring-core.3.0.5 .i am getting error.Please help me resolve this issue.

    Regards,
    Venkat.

    ReplyDelete
  31. Good article! Congratulations guy!!

    ReplyDelete
    Replies
    1. what is username/password for this application. Thanks

      Delete
  32. What is the username and password for logging into LDAP server successfully Login ?

    ReplyDelete
  33. Hi i am getting below error,

    attributeType w/ OID 2.5.4.16 not registered!

    Please help me to get away from this,

    Thanks,
    Kiran

    ReplyDelete
  34. ldap online training| ldap training| call us+919000444287 ...
    http://www.21cssindia.com/courses/ldap-online-training-103.html
    ఈ పేజీని అనువదించు
    LDAP Online Training, LDAP training, LDAP course contents, LDAP , call us: +919000444287,dharani@21cssindia.com.
    course contents, biztalk admin enquiry, ...Courses at 21st Century Software Solutions
    Talend Online Training -Hyperion Online Training - IBM Unica Online Training -
    Siteminder Online Training - SharePoint Online Training - Informatica Online Training
    SalesForce Online Training - Many more… | Call Us +917386622889
    Visit: http://www.21cssindia.com/courses.html

    ReplyDelete
  35. Are we supposed to have any LDIF file?

    ReplyDelete
    Replies
    1. nope, you are pointing to a ldap server. If you don't have an ldap then setup a test ldap.
      Seems you are new, so if you don't want to use ldap, try using inmemory auth first. replace the ldap with








      Delete
  36. Hi,

    Iam able to authenticate user from ldap using spring security......... Can someone tell me what will be the best approach for the below scenario.

    We have two spring security implemented web application and like to do seamless integration between these applications... Basically, I want to implement SSO so that i can login once through app1 and get access to app2 without changeling login page of app2...

    ReplyDelete
  37. This is a great tutorial. It helps me to find the answer that I was looking for for a long time.
    Thank you so much.

    ReplyDelete
  38. How to know user account is disabled or locked

    ReplyDelete
  39. Thanks for sharing. I hope it will be helpful for too many people that are searching for this topic.
    Signature:
    Jugar juegos de frozen en línea gratis, los nuevos de princesa de Disney juegos frozen - la princesa encantadora y linda. Divertirse frozen!

    ReplyDelete
  40. Thank you for that information you article
    Signature:
    download free descargar whatsapp and download baixar whatsapp online and descargar whatsapp gratis , baixar whatsapp gratis

    ReplyDelete
  41. Thanks for all your information, Website is very nice and informative content.
    Signature:
    download descarga facebook gratis para Android celular and download free descargar facebook gratis and descargar facebook gratis , descarga facebook

    ReplyDelete
  42. Posts shared useful information and meaningful life, I'm glad to be reading this article and hope to soon learn the next article. thank you
    kids games online
    friv 2
    unblocked games
    juegos de un show mas

    ReplyDelete
  43. I'm constantly getting a 403 access denied error, I assume the authentication part is working fine, but i do not know what is going wrong, any suggestions?

    ReplyDelete
    Replies
    1. I could debug further to find that the access having role admin fails, basically because it says no granted authorities to the user

      Delete
    2. Ok. I could solve it myself finally.was a problem with uniqueMember mapping. where ou=parent, I had ou=child itself.

      Delete
  44. This information which you provided is very much useful for us.It was very interesting and useful for JAVA.we also provide struts see below.
    Regards...
    struts offline training in USA

    ReplyDelete
  45. Thank you for such a great tutorial Krams. But I'm getting j_spring_security_check 404 error, I'm using spring 4 and spring security 3.2.0 . I'm stuck and not logged in at all. Any luck? I'm struggling with this for weeks now. Thanks in advance

    ReplyDelete
  46. Hi what is username/password for this application

    ReplyDelete
    Replies
    1. check the other tutorials, it should be 'pass' for every user.

      Delete
  47. best article for ldap with spring

    ReplyDelete
  48. Great tutorial !!

    Greetings

    java books

    ReplyDelete
  49. Hi kram,
    simply suberb..
    Nicely explained.
    It will be really great, If you add few more roles and authentication in future explanation

    ReplyDelete
  50. I have read your blog its very attractive and impressive. I like it your blog.

    Spring online training Spring online training Spring Hibernate online training Spring Hibernate online training Java online training

    spring training in chennai spring hibernate training in chennai

    ReplyDelete
  51. Hi downloaded the zip file and when I try to run I am getting 404 error.. please help me to solve this problem.

    ReplyDelete
  52. Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging.

    core java training in Electronic City

    Hibernate Training in electronic city

    spring training in electronic city

    java j2ee training in electronic city

    ReplyDelete
  53. Great Article… I love to read your articles because your writing style is too good,
    its is very very helpful for all of us and I never get bored while reading your article because,
    they are becomes a more and more interesting from the starting lines until the end.
    Java training in Chennai

    Java training in Bangalore

    Java online training

    Java training in Pune





    ReplyDelete
  54. Nice Article… I love to read your articles because your writing style is too good, its is very very helpful for all of us and I never get bored while reading your article because, they are becomes a more and more interesting from the starting lines until the end.

    Check out : best hadoop certification in chennai
    best hadoop training institute in chennai with placement
    best bigdata hadoop training in chennai
    big data training in chennai velachery

    ReplyDelete
  55. Great to share this information thanks. I am really happy to say it’s an interesting post to read. I learn new information from your blog.best fashion photographer in jalandhar

    ReplyDelete
  56. Nice Presentation and its hopefull words..
    if you want a cheap web hosting in web
    cheap web hosting company chennai

    ReplyDelete
  57. thanks for ur valuable information,keep going touch with us

    Scaffolding dealers in chennai

    ReplyDelete
  58. This comment has been removed by the author.

    ReplyDelete
  59. I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post. Click here

    ReplyDelete
  60. Grow sale india classified ads website Buy&sell find just about anything

    post free classified ads in india

    ReplyDelete
  61. Fourceup Security is a best security service in chennai based upon Factories ,Offices ,Banks & their ATM ,Hotels ,Hospitals ,Schools ,Residential Apartments ,Construction Sites(Conditions Apply) ,Functions ,Tracking Crime systems.

    best security service in chennai
    security agency in chennai

    ReplyDelete
  62. The article was up to the point and described the information very effectively. Thanks to blog author for wonderful and informative post.
    Security Service

    ReplyDelete
  63. The effectiveness of IEEE Project Domains depends very much on the situation in which they are applied. In order to further improve IEEE Final Year Project Domains practices we need to explicitly describe and utilise our knowledge about software domains of software engineering Final Year Project Domains for CSE technologies. This paper suggests a modelling formalism for supporting systematic reuse of software engineering technologies during planning of software projects and improvement programmes in Project Centers in Chennai for CSE.

    Spring Framework has already made serious inroads as an integrated technology stack for building user-facing applications. Spring Framework Corporate TRaining the authors explore the idea of using Java in Big Data platforms.
    Specifically, Spring Framework provides various tasks are geared around preparing data for further analysis and visualization. Spring Training in Chennai

    ReplyDelete
  64. Great Article. Thank you for sharing! Really an awesome post for every one.

    IEEE Final Year projects Project Centers in Chennai are consistently sought after. Final Year Students Projects take a shot at them to improve their aptitudes, while specialists like the enjoyment in interfering with innovation. For experts, it's an alternate ball game through and through. Smaller than expected IEEE Final Year project centers ground for all fragments of CSE & IT engineers hoping to assemble. Final Year Project Domains for IT It gives you tips and rules that is progressively critical to consider while choosing any final year project point.

    Spring Framework has already made serious inroads as an integrated technology stack for building user-facing applications. Spring Framework Corporate TRaining the authors explore the idea of using Java in Big Data platforms.
    Specifically, Spring Framework provides various tasks are geared around preparing data for further analysis and visualization. Spring Training in Chennai

    ReplyDelete
  65. Its really helpful for the users of this site. I am also searching about these type of sites now a days. So your site really helps me for searching the new and great stuff.

    aws training in bangalore

    aws courses in bangalore

    aws classes in bangalore

    aws training institute in bangalore

    aws course syllabus

    best aws training

    aws training centers

    ReplyDelete
  66. This is the exact information I am been searching for, Thanks for sharing the required infos with the clear update and required points. To appreciate this I like to share some useful information.

    mulesoft training in bangalore

    mulesoft courses in bangalore

    mulesoft classes in bangalore

    mulesoft training institute in bangalore

    mulesoft course syllabus

    best mulesoft training

    mulesoft training centers

    ReplyDelete
  67. I just loved your article on the beginners guide to starting a blog.If somebody take this blog article seriously in their life, he/she can earn his living by doing blogging.thank you for thizs article. best sap hana online training

    ReplyDelete
  68. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    servicenow online training
    best servicenow online training
    top servicenow online training

    ReplyDelete

  69. I am really happy to say it’s an interesting post to read . I learn new information from your article , you are doing a great job . Keep it up and a i also want to share some information regarding selenium online course and selenium videos

    ReplyDelete
  70. GrueBleen – One of the best social media marketing agency in Riyadh- Saudi Arabia. Visit here for the all service details of GrueBleen.
    Social Media Marketing Agency

    ReplyDelete
  71. Agriculture Solutions – Taldeen is a plastic manufacturing company in Saudi Arabia. They are manufacturing agricultural plastic products like greenhouse cover and hay cover. Visit the below link to know more details
    Agriculture Solutions
    Greenhouse Cover

    ReplyDelete
  72. GrueBleen – One of the best branding and marketing agency in Riyadh- Saudi Arabia. If you need the details, click the below link
    Branding Agency Riyadh
    Marketing Agency Riyadh

    ReplyDelete
  73. BSc in Optometry – Here is the details about Best BSc Optometry Colleges In Bangalore. If you are looking to study in Bangalore, the below link will redirect to a page that will show the best OPT colleges in Bangalore. If you are looking to study BSc Optometry in Bangalore, click the below link.
    Optometry Colleges In Bangalore

    ReplyDelete
  74. BSc Cardiac Care Technology – Here is the details about Best BSc Cardiac Care Technology Colleges In Bangalore. If you are looking to study in Bangalore, the below link will redirect to a page that will show the best BCC colleges in Bangalore
    BSc Cardiac Care Technology Colleges In Bangalore

    ReplyDelete
  75. Handling Solutions Products - Here is the link of best Handling Solutions products of Taldeen. Taldeen is one of the best Plastic Manufacturing Company Based in Saudi Arabia-Hail. Visit the below links to know more about products details
    Handling Solutions
    Plastic Pallets

    ReplyDelete
  76. Poker online situs terbaik yang kini dapat dimainkan seperti Bandar Poker yang menyediakan beberapa situs lainnya seperti http://62.171.128.49/hondaqq/ , kemudian http://62.171.128.49/gesitqq/, http://62.171.128.49/gelangqq/, dan http://62.171.128.49/seniqq. yang paling akhir yaitu http://62.171.128.49/pokerwalet/. Jangan lupa mendaftar di panenqq silakan dicoba ya boss

    ReplyDelete

  77. You write this post very carefully I think, which is easily understandable to me. Not only this, but another post is also good. As a newbie, this info is really helpful for me. Thanks to you.
    Tally ERP 9 Training
    tally classes
    Tally Training institute in Chennai
    Tally course in Chennai

    ReplyDelete
  78. Great Article. Thank you for sharing! Really an awesome post for every one.
    Digital Marketing Course In Kolkata

    ReplyDelete
  79. Nice and good article. It is very useful for me to learn and understand easily. Thanks for sharing your valuable information and time. Please keep updating
    Dell Boomi Online Training
    Dell Boomi Training

    ReplyDelete
  80. This comment has been removed by the author.

    ReplyDelete

  81. Wow. That is so elegant and logical and clearly explained. Brilliantly goes through what could be a complex process and makes it obvious.I want to refer about the tableau online training and tableau tutorial videos

    ReplyDelete
  82. This site was... eviews how do I say it? Relevant!! Finally I have found something that helped me. Thank you!

    ReplyDelete

  83. Well thats a nice article.The information You providied is good . Here is i want to share about dell boomi training videos and Mulesoft Training videos . Expecting more articles from you .

    ReplyDelete
  84. With the help of creative designing team TSS advertising company provides different branding and marketing strategies in advertising industry...
    https://www.tss-adv.com/branding-and-marketing

    ReplyDelete

  85. TeaTv Apk Is Another One Of The Best Online Streaming Application For Smartphone Users. This Application Is Available For Android & IOS Users. Also, You Can Connect This Application Easily With Amazon Firestick, Android Smart TVs, Start Settop Box, Etc. There are more apk to online streaming is Mediabox apk for smartphone users ( Android and ios ) and
    Best Wishes Quotes 
    Watch Free online Movies 
    onhax 
    onhax android 
    Hulu Apk 

    ReplyDelete
  86. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    servicenow online training
    best servicenow online training
    top servicenow online training

    ReplyDelete
  87. Really Very helpful Post & thanks for sharing & keep up the good work.
    Oflox Is The Best Digital Marketing Company In Dehradun Or Website Design Company In Dehradun

    ReplyDelete
  88. Thanks for the informative article About Java.This is one of the best resources I have found in quite some time. Nicely written and great info. I really cannot thank you enough for sharing.
    Java training in chennai | Java training in annanagar | Java training in omr | Java training in porur | Java training in tambaram | Java training in velachery

    ReplyDelete
  89. Effective blog with a lot of information. I just Shared you the link below for Courses .They really provide good level of training and Placement,I just Had Cloud Computing Classes in this institute , Just Check This Link You can get it more information about the Cloud Computing course.


    Java training in chennai | Java training in annanagar | Java training in omr | Java training in porur | Java training in tambaram | Java training in velachery

    ReplyDelete
  90. Thanks for the informative article About Java. This is one of the best resources I have found in quite some time. Nicely written and great info. I really cannot thank you enough for sharing.
    Java training in chennai | Java training in annanagar | Java training in omr | Java training in porur | Java training in tambaram | Java training in velachery

    ReplyDelete
  91. Thanks a lot for sharing such a good source with all, i appreciate your efforts taken for the same. I found this worth sharing and must share this with all.


    Dot Net Training in Chennai | Dot Net Training in anna nagar | Dot Net Training in omr | Dot Net Training in porur | Dot Net Training in tambaram | Dot Net Training in velachery




    ReplyDelete
  92. I am really happy to say it is an interesting post, thank you for sharing.

    https://nareshit.com/advanced-java-online-training/

    ReplyDelete
  93. I loved as much as you will receive carried out right here. The sketch is tasteful, your authored material stylish. nonetheless, you command get bought an edginess over that you wish be delivering the following.
    IELTS Coaching in chennai

    German Classes in Chennai

    GRE Coaching Classes in Chennai

    TOEFL Coaching in Chennai

    spoken english classes in chennai | Communication training


    ReplyDelete
  94. very nice blogs!!! i have to learning for lot of information for this sites...Sharing for wonderful information.Thanks for sharing this valuable information to our vision. You have posted a trust worthy blog keep sharing.

    Azure Training in Chennai

    Azure Training in Bangalore

    Azure Training in Hyderabad

    Azure Training in Pune

    Azure Training | microsoft azure certification | Azure Online Training Course

    Azure Online Training

    ReplyDelete
  95. Nice article i was really impressed by seeing this article, it was very interesting and it is very useful for me.This is incredible,I feel really happy to have seen your webpage.I gained many unknown information, the way you have clearly explained is really fantastic.keep posting like this information.
    Full Stack Training in Chennai

    Full Stack Course Chennai
    Full Stack Training in Bangalore

    Full Stack Course in Bangalore

    Full Stack Training in Hyderabad

    Full Stack Course in Hyderabad

    Full Stack Training

    Full Stack Course

    Full Stack Online Training

    Full Stack Online Course




    ReplyDelete
  96. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    mulesoft online training
    best mulesoft online training
    top mulesoft online training

    ReplyDelete

  97. Firstly talking about the Blog it is providing the great information providing by you . Thanks for that .Hope More articles from you . Next i want to share some information about Salesforce training in Banglore .

    ReplyDelete
  98. Hi! This is my first comment here so I just wanted to give a quick shout out and say I genuinely enjoy reading your blog posts. Can you recommend any other Beauty Guest Post blogs that go over the same topics? Thanks a ton!

    ReplyDelete

  99. Firstly talking about the Blog it is providing the great information providing by you . Thanks for that .Hope More articles from you . Next i want to share some Information about Salesforce training in Hyderabad .

    ReplyDelete
  100. I always found very much interesting content on your posts. keep posting, thanks for sharing with us and giving us your precious time.
    1121 Basmati Wholesaler
    Sarbati Basmati Trader
    Basmati exporter in India
    Sona Masoori Basmati Wholesaler in delhi
    Sugandha Basmati Trader in delhi
    Buy Non- Basmati

    ReplyDelete
  101. I`m always search this relevant content.I think you are the right person because you provide many useful information.

    ReplyDelete
  102. Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
    mulesoft online training
    best mulesoft online training
    top mulesoft online training

    ReplyDelete
  103. It was so nice content.I was really satisfied by seeing this content.
    sap wm training in bangalore

    ReplyDelete
  104. https://www.atranspackers.in/index.html

    ReplyDelete