Hashtable<String, String> environment = new Hashtable<String, String>();
environment.put(LdapContext.CONTROL_FACTORIES,"com.sun.jndi.ldap.ControlFactory ");
environment.put("javax.security.sasl.policy.noplaintext", "true");
environment.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
environment.put(Context.PROVIDER_URL, "ldap://url:389/");
environment.put(Context.SECURITY_AUTHENTICATION, "DIGEST-MD5 GSSAPI");
environment.put(Context.SECURITY_PROTOCOL, "sasl");
environment.put(Context.SECURITY_PRINCIPAL, "admin");
environment.put(Context.SECURITY_CREDENTIALS, "password");
try {
    System.out.println("nine");
    DirContext ctx = new InitialDirContext(environment);
    System.out.println("ten");

    String oldPass = "" + "3qgYl3R2oh7Rwo6" + "";
    String newPass = "" + "3qgYl3R2oh7Rwo5" + "";

    ModificationItem[] modificationItems = new ModificationItem[2];
    modificationItems[0] = new ModificationItem(
            DirContext.REMOVE_ATTRIBUTE, new BasicAttribute(
                    "unicodePwd", oldPass.getBytes("UTF-16LE")));
    modificationItems[1] = new ModificationItem(
            DirContext.ADD_ATTRIBUTE, new BasicAttribute("unicodePwd",
                    newPass.getBytes("UTF-16LE")));
  //  modificationItems[0] = new ModificationItem(
  //          DirContext.REPLACE_ATTRIBUTE, new BasicAttribute(
  //                  "unicodePwd", newPass.getBytes("UTF-16LE")));

    try {
        ctx.modifyAttributes("CN=xxx,OU=xx,OU=xx,DC=xx,DC=xxx,DC=xx",
                modificationItems);
    } catch (NamingException e) {
        e.printStackTrace();
    }
    ctx.close();
} catch (NamingException | UnsupportedEncodingException e) {
    e.printStackTrace();
    System.out.println(e.getMessage().trim());

}

Baktığım çoğu kaynakta yukarıdaki şekilde yapılan ve Active Directory kullanıcı şifresi(unicodePwd) değiştirmeye yarayan kod bu şekilde ve admin olarak bağlandığım halde LDAP:53 hatası veriyor. Yukarıdaki kod ile unicodePwd değilde başka bir girdi değiştirmeye çalıştığımda sorunsuz çalışıyor. Tüm bu işlemleri hem yönetici hem standar kullanıcı olarak denedim çalışmadı.

soruldu: 02 Tem '13, 11:53

batuhanc's gravatar image

batuhanc
1019914
cevap kabul oranı: 25%

değiştirildi: 07 Ağu '13, 06:55

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


Anladığım kadarıyla, erişmeye çalıştığın servis password reset istemini kabul etmiyor. Dolayısıyla, outlook web access hizmetinden faydalanıyorsanız, o zaman passwordchangeflags parametresini 1 yapmanız gerekiyor. İlgili belge ekte ( ayrıca bir tanede script linki gönderiyorum, daha bir sürü script mevcut aratıp diğerlerine de bakabilirsin )

Implementing the Change Password feature with Outlook Web Access
Reset Active Directory user password with a Random String

permanent link

cevaplandı: 02 Tem '13, 13:32

O%C4%9Fuz%20%C3%87elikdemir's gravatar image

Oğuz Çelikdemir
2.0k52234
cevap kabul oranı: 13%

Cevabınız için teşekkür ederim. Set Active Directory Password yapabilmem için server ile olan bağlantının en az 128 bit şifrelenmiş olması gerekiyormuş. Lakin bağlanmaya çalıştığım sunucunun ssl portu kapalı. SSL ile yapamadığım için GSSAPI ile yapmaya çalışıyorum.

(03 Tem '13, 08:57) batuhanc batuhanc's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×4
×4

Soruldu: 02 Tem '13, 11:53

Görüntüleme: 673 kez

Son güncelleme: 07 Ağu '13, 06:55

powered by BitNami OSQA