Comment puis-je convertir un Active Directory objectGuid pour lisible une chaîne de caractères?

Je suis en utilisant Novell.Directory.Ldap dans un Xamarin application mobile, écrit en C#.

À l'aide de Novell, je suis capable d'authentifier un utilisateur sur la base de domaine, nom d'utilisateur et mot de passe à l'aide de

LdapConnection.bind(username, password);

Puis-je effectuer une recherche, à l'aide de la sAMAccountName, qui est l'équivalent pour le nom d'utilisateur fourni.

Après tout cela, qui fonctionne avec succès, j'ai besoin d'obtenir de l'utilisateur objectGuid de sorte que je peux interroger des bases de données externes, ce guid comme une clé. Le problème c'est que quand je reçois le guid formulaire à retourner la LdapSearchResults, il est encodé en quelque sorte. Et je ne peux pas comprendre comment obtenir l'lisible représentation de chaîne de ce guid.

Quelqu'un a plus d'informations à ce sujet? J'imagine que le guid est codé en quelque sorte, mais comment c'est codé, je ne sais pas. J'ai essayé

System.Convert.FromBase64String 

et qui n'a pas aidé. J'apprécie l'aide les gars, laissez-moi savoir si je peux poster plus de l'information qui serait utile.

private void Login()
{
    if (LOG.isInfoEnabled())
    {
        LOG.info("Attempting LDAP logon . . .");

        if (LOG.isDebugEnabled())
        {
            LOG.debug("Host: " + this.ldapHost);
            LOG.debug("Port: " + this.ldapPort);
            LOG.debug("SearchBase: " + this.ldapSearchBase);
        }
    }

    LdapConnection conn = new LdapConnection();

    try
    {
        conn.Connect(this.ldapHost, this.ldapPort);

        if (LOG.isDebugEnabled())
        {
            LOG.debug("connected?: " + conn.Connected.ToString());
        }
    }
    catch (Exception e)
    {
        LOG.error("An exception occurred while attempting to connect to AD server!", e);

        //INFORM USER ABOUT ERROR
        authError(Resource.String.error_unknown);
    }

    if (!string.IsNullOrEmpty(this.editTextUserName.Text) && !string.IsNullOrEmpty(this.editTextPassword.Text))
    {
        //HIDE KEYBOARD
        var imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
        imm.HideSoftInputFromWindow(editTextPassword.WindowToken, HideSoftInputFlags.NotAlways);

        //HIDE 'LOGON' BUTTON WHILE LOGGING ON
        this.buttonLogin.Visibility = ViewStates.Invisible;

        try
        {
            //PERFORM AUTHENTICATION
            conn.Bind(this.userName, this.userPassword);

            if (LOG.isDebugEnabled())
            {
                LOG.debug("conn.Bound?: " + conn.Bound);
            }

            if (conn.Bound)
            {
                if (LOG.isDebugEnabled())
                {
                    LOG.debug("authentication successful");
                }

                string[] name = this.userName.Split('\\');
                LOG.debug("name[0]: " + name[0]);
                LOG.debug("name[1]: " + name[1]);

                string filter = "(sAMAccountName=" + name[1] + ")";
                string guid = "";

                LdapSearchResults searchResults = conn.Search(
                    this.ldapSearchBase, //search base
                    LdapConnection.SCOPE_SUB, //search scope  
                    filter, //filter
                    null, //attributes
                    false); //attributes only

                while (searchResults.hasMore())
                {
                    LdapEntry nextEntry = null;

                    try
                    {
                        nextEntry = searchResults.next();
                        guid = nextEntry.getAttribute("objectGUID").StringValue;
                    }
                    catch (LdapException e)
                    {
                        LOG.error("An exception occurred while attempting to get next search result!", e);
                        continue;
                    }
                }

                Intent intent = new Intent(this, typeof(DashboardActivity));
                intent.PutExtra("guid", guid);

                StartActivity(intent);
            }
            else
            {
                //INFORM USER ABOUT ERROR
                authError(Resource.String.error_auth);
            }
        }
        catch (LdapException ldape)
        {
            LOG.error("An exception occurred while attempting to authenticate user credentials!", ldape);

            //INFORM USER ABOUT ERROR
            authError(Resource.String.error_auth);
        }
        finally
        {
            conn.Disconnect();
        }
    }
    else
    {
        conn.Disconnect();
    }
}
Vous dites que vous êtes capable de se lier à l'aide de domaine et nom d'utilisateur. Comment êtes-vous exactement cette mise en forme? Je vais avoir des ennuis avec ma lier. Voir ma question ici: stackoverflow.com/q/30773555/3799847

OriginalL'auteur liltitus27 | 2013-08-22