io.vertx.ext.auth.shiro.impl.LDAPAuthProvider.java Source code

Java tutorial

Introduction

Here is the source code for io.vertx.ext.auth.shiro.impl.LDAPAuthProvider.java

Source

/*
 * Copyright 2014 Red Hat, Inc.
 *
 *  All rights reserved. This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License v1.0
 *  and Apache License v2.0 which accompanies this distribution.
 *
 *  The Eclipse Public License is available at
 *  http://www.eclipse.org/legal/epl-v10.html
 *
 *  The Apache License v2.0 is available at
 *  http://www.opensource.org/licenses/apache2.0.php
 *
 *  You may elect to redistribute this code under either of these licenses.
 */

package io.vertx.ext.auth.shiro.impl;

import io.vertx.core.Vertx;
import io.vertx.core.json.JsonObject;
import org.apache.shiro.realm.Realm;
import org.apache.shiro.realm.ldap.JndiLdapContextFactory;
import org.apache.shiro.realm.ldap.JndiLdapRealm;

import static io.vertx.ext.auth.shiro.LDAPProviderConstants.*;

/**
 *
 * @author <a href="http://tfox.org">Tim Fox</a>
 */
public class LDAPAuthProvider extends ShiroAuthProviderImpl {

    public static Realm createRealm(JsonObject config) {
        JndiLdapRealm ldapRealm = new JndiLdapRealm();
        JndiLdapContextFactory factory = new JndiLdapContextFactory();
        String userDNTemplate = config.getString(LDAP_USER_DN_TEMPLATE_FIELD);
        if (userDNTemplate != null) {
            ldapRealm.setUserDnTemplate(userDNTemplate);
        }
        String url = config.getString(LDAP_URL);
        if (url != null) {
            factory.setUrl(url);
        }
        String authenticationMechanism = config.getString(LDAP_AUTHENTICATION_MECHANISM);
        if (authenticationMechanism != null) {
            factory.setAuthenticationMechanism(authenticationMechanism);
        }
        String contextFactoryClassName = config.getString(LDAP_CONTEXT_FACTORY_CLASS_NAME);
        if (contextFactoryClassName != null) {
            factory.setContextFactoryClassName(contextFactoryClassName);
        }
        boolean poolingEnabled = config.getBoolean(LDAP_POOLING_ENABLED, false);
        factory.setPoolingEnabled(poolingEnabled);
        String referral = config.getString(LDAP_REFERRAL);
        if (referral != null) {
            factory.setReferral(referral);
        }
        String systemUsername = config.getString(LDAP_SYSTEM_USERNAME);
        if (systemUsername != null) {
            factory.setSystemUsername(systemUsername);
        }
        String systemPassword = config.getString(LDAP_SYSTEM_PASSWORD);
        if (systemPassword != null) {
            factory.setSystemPassword(systemPassword);
        }
        ldapRealm.setContextFactory(factory);
        ldapRealm.init();
        return ldapRealm;
    }

    public LDAPAuthProvider(Vertx vertx, Realm realm) {
        super(vertx, realm);
    }
}