Anmeldung an eine Active Directory?

Status
Nicht offen für weitere Antworten.

alaska94

Aktives Mitglied
Hallo Folks,

ich habe kaum Ahnung von Java.
Aber ich muss umbedingt ein Java App schreiben, was Eingaben gegen die Benutzerdaten in einer Active Directory authentifiziert.

Ich möchte mittels Eingabe eines Benutzernamen und eines Passwortes überprüfen, ob dieser Benutzer sich an der Active Directory anmelden kann oder nicht.
Kennt einer eine super einfache Anleitung dafür?
Oder kann mir einer von Euch schnell Quellcode für dieses Problem posten?, am besten mit Kommentaren!!

Danke schonmal.

Gruß

Alaska
 

Caffè Latte

Bekanntes Mitglied
Hi,

so vielleicht (nicht von mir ;)):

Code:
import java.security.Principal;
import java.security.PrivilegedAction;
import java.util.Iterator;
import java.util.Set;

import javax.security.auth.Subject;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;

import principal.JaasRolePrincipal;

import com.sun.security.auth.callback.TextCallbackHandler;

/**
 * This Application authenticate a user and let him start the LoginAction if his
 * right support it.
 * @author Orientation in Objects GmbH
 */
public class LoginJaas {

	private static Subject mySubject;

	/**
	 * Create a <code>LoginContext</code> with the specified configuration
	 * (oiojaas. conf) and policy (oiojaas.policy).
 Let the user login to
	 * the application. Gets the users domain roles from
	 * <code>GetRole</code>

	 * 
 Run the <code>LoginAction</code>
	 * @see LoginAction
	 * @see GetRole
	 * @param args not used
	 */
	public static void main(String[] args) {

		LoginContext lc = null;

		try {
			lc = new LoginContext("LoginJaas", new TextCallbackHandler());

		} catch (LoginException le) {
			System.err.println(
				"Cannot create LoginContext. " + le.getMessage());
			System.exit(-1);
		} catch (SecurityException se) {
			System.err.println(
				"Cannot create LoginContext. " + se.getMessage());
			System.exit(-1);
		}

		try {
			lc.login();

		} catch (LoginException le) {

			System.err.println("Error at Authentication:");
			le.printStackTrace();
			System.exit(-1);

		}

		System.out.println("Authentication succeed!");

		setMySubject(lc.getSubject());

		addRoleToSubject(
			(Principal) getMySubject().getPrincipals().iterator().next());
		printPrincipals(getMySubject().getPrincipals());

		PrivilegedAction action = new LoginAction();
		Subject.doAs(getMySubject(), action);

		try {
			lc.logout();
		} catch (LoginException le) {
			System.err.println("Error at Logout:");
			le.printStackTrace();
		}
	}

	private static void printPrincipals(Set myPrincipalsSet) {
		Principal principal;
		Iterator myIt = myPrincipalsSet.iterator();
		while (myIt.hasNext()) {
			principal = (Principal) myIt.next();
			System.out.println(
				"principal classname: "
					+ principal.getClass().getName()
					+ " - value: "
					+ principal.getName());
		}

	}

	private static void addRoleToSubject(Principal principal) {
		GetRole getRole = new GetRole();
		getRole.scanRole(principal.getName());

		if (getRole.getRoleAsEnumeration() != null) {
			String fullRoleName;
			String roleName;
			while (getRole.getRoleAsEnumeration().hasMoreElements()) {
				fullRoleName =
					getRole.getRoleAsEnumeration().nextElement().toString();

				if (fullRoleName.indexOf("CN") != -1) {
					roleName =
						fullRoleName.substring(
							fullRoleName.indexOf("CN") + 3,
							fullRoleName.indexOf(","));
					JaasRolePrincipal jrp = new JaasRolePrincipal(roleName);
					getMySubject().getPrincipals().add(jrp);
				}

			}
		} else {
			System.out.println("user has no roles");
		}
	}

	/**
	 * Returns the user Subject.
	 * @return Subject
	 */
	private static Subject getMySubject() {
		return mySubject;
	}

	/**
	 * Sets the user Subject.
	 * @param mySubject The mySubject to set
	 */
	private static void setMySubject(Subject mySubject) {
		LoginJaas.mySubject = mySubject;
	}

}

Wenn das in die richtige Richtung geht, dann lies mal hier. Super einfach ist das IMHO nicht, aber verständlich - sogar für mich als Anfänger.

Hoffe es hilft ...
 

alaska94

Aktives Mitglied
Code:
 PrivilegedAction action = new LoginAction();
Hier meldet mir Eclipse:

LoginAction cannot be resolved to a typ

Hier das Gleiche nur mit Get Role.
Code:
GetRole getRole = new GetRole();

Eclipse kennt wohl diese beiden Objekte nicht.
 

Caffè Latte

Bekanntes Mitglied
Hi,

klar kommt der Fehler, da ich diese Klassen hier nicht reingeschrieben habe. Hol dir mal das Beispiel unter dem oben genannten Link und pass es deinen Bedürfnissen an.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Hilfe beim programmiern einer App zur Anmeldung im Wlan-Netzwerk Netzwerkprogrammierung 0
T Windows-Anmeldung weiterreichen? Netzwerkprogrammierung 4
N Download HTTP .php-Seite mit Anmeldung Netzwerkprogrammierung 5
K Java RMI bricht ab wenn Remote eine Methode ausgeführt werden soll Netzwerkprogrammierung 5
D path-Variablen in eine URL hinzufügen mit Java 1.8 Netzwerkprogrammierung 2
T Webserviceaufruf verursacht eine Exception Netzwerkprogrammierung 3
B Codierung bei der Anbindung an eine REST API Netzwerkprogrammierung 3
L Socket Wie kann ich checken ob ein User eine Nachricht per Outputstream an den Server gesendet hat? Netzwerkprogrammierung 1
X Mit Java eine Applikation auf einem anderen Windows Rechner (Windows Server 2008) starten Netzwerkprogrammierung 1
H Socket Java | Server sendet Nachricht nur wenn vorher eine JOptionPane-Nachricht ausgegeben wurde. Netzwerkprogrammierung 2
P Eine etwas andere Frage: Sicherheit Netzwerkprogrammierung 5
I Server schickt eine Nachricht an Broadcast Netzwerkprogrammierung 2
M Server nur für eine Aufgabe Netzwerkprogrammierung 2
L ActiveMq - wie kann ich eine Queue löschen? Netzwerkprogrammierung 2
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
C ObjectInputReader wirft beim zweiten Aufruf eine Exception Netzwerkprogrammierung 3
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
N eine klasse mit server & client Netzwerkprogrammierung 5
X Über eine Socket-Verbindung Arrays übergeben Netzwerkprogrammierung 5
H Eine Mac-Adresse übers Internet ermitteln Netzwerkprogrammierung 2
V Alle Ip-Adressen eine Lokalen-Netzwerkes erfragen Netzwerkprogrammierung 9
B Zugriff auf eine Text- und XML-Datei Netzwerkprogrammierung 4
T Tomcat zeigt immer nur eine Seite Netzwerkprogrammierung 3
Q Problem bei Vergleichen von Strings übertragen über eine Socketverbindung Netzwerkprogrammierung 3
E Wie erstelle ich eine blockiernde Funktion? Netzwerkprogrammierung 12
G binden auf eine bstimmte IP und Netzwerkinterface Netzwerkprogrammierung 12
G Warum eine java.net.ConnectException? Netzwerkprogrammierung 7
P eine BufferedReader für alles ankommende Netzwerkprogrammierung 2
M Wie läd man eine HTML Seite in Java runter Netzwerkprogrammierung 2
T Möglichkeit über das Netzwerk eine Funktion zu starten? Netzwerkprogrammierung 2
F String in eine URL umwandeln Netzwerkprogrammierung 7
M Wie empfange ich eine ftp liste? Netzwerkprogrammierung 12
S GEHT DAS? - Nur eine Frage! (Printer Port direkt ansteuern?) Netzwerkprogrammierung 4
R auf RemotPC eine Applikation starten Netzwerkprogrammierung 10
D Zwei Applikationen eine Liste? Netzwerkprogrammierung 2
X mehrere Request über eine HttpURLConnection Netzwerkprogrammierung 2
J Active Directory mit Java auslesen Netzwerkprogrammierung 1
P Praktikumsarbeit: Zugriff Active Directory/Server/Datenbank Netzwerkprogrammierung 15

Ähnliche Java Themen

Neue Themen


Oben