Kas
13
2017

EBS Açılış Şifresinin Kurallar Dahilinde Girilmesi (R12)

Merhaba,

EBS ekranları açılırken şifre güvenliliği açısından özel karakter kullanımını zorlamak için aşağıdaki yöntemleri uygulayabilirsiniz.

Uygulama Adımları

  • $JAVA_TOP altındaki  oracle.apps.fnd.security dizin altına custom oluşturulacak java programı (XXPasswordValidation.java) taşınır.
  • Uzantısı java olan program derlenerek class dosyası aynı dizinde oluşturulur. Unix ortama bağlanıp $JAVA_TOP/oracle.apps.fnd.security altında iken “javac XXPasswordValidation.java” komutu ile programın XXPasswordValidation.class dosyası oluşturulur.
  • Yapılan işlemleri db ye tanıtmak içinde oluşturulan java dosyasının db de yüklenme aşamaları tanımlanır
  • Unix ortamda db tarafına bağlanıp sys kullanıcısı ile aşağıdaki komut satırı çalıştırılır.

          loadjava -user apps/apps -verbose -resolve -force XXPasswordValidation.java

  • Db de kontrollerin sağlanması için aşağıdaki script çalıştırılır.

SELECT dbms_java.longname(object_name), status
FROM user_objects
WHERE object_type = ‘JAVA CLASS’
AND dbms_java.longname(object_name) LIKE ‘%XXPasswordValidation’;

  • Sistem Yöneticisi–> Profil –> Giriş Parolası Özel profilini yeni oluşturulan oracle.apps.fnd.security.XXPasswodValidation olarak İşletme Birimi bazında güncellenir.
  • Tahmin Edilmesi Zor Giriş Parolası değerini null olarak güncellenir
  • Giriş Parolası Uzunluğu profil değeri istenilen değer olarak güncellenir.
  • Uygulama Yazılımı Geliştiricisi –>Uygulama –>Mesajlar  altından aşağıdaki mesaj blokları tanımlanmalıdır.

XX_USR_PWD_SAME ,XX_REPEAT_CHAR,XX_PWD_RULE_CLASSES

  • İşlemler yapıldıktan sonra $JAVA_TOP altına class oluşturulduğundan Apache bounce edilmelidir.

Özel oluşturulan java kodu

package oracle.apps.fnd.security;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import oracle.apps.fnd.common.VersionInfo;

// Referenced classes of package oracle.apps.fnd.security:
// PasswordValidation

public class XXPasswordValidation
implements PasswordValidation
{

public String getErrorStackApplicationName()
{
return “XX”;
}

public String getErrorStackMessageName()
{
return m_errorStackMessageName;
}

public boolean validate(String username, String password)
{
/* Validates username = password */
if(validateNoUsername(username, password))
{
m_errorStackMessageName = “XX_USR_PWD_SAME”;
return false;
}

/* Check for repeated characters */
if(!validateNoRepeats(password.toLowerCase()))
{
m_errorStackMessageName = “XX_REPEAT_CHAR”;
return false;
}

/* Checks following rules
1) Contains A-Z
2) Contains a-z
3) Contains 0-9
4) Contains ?!%$#

5) Should satisfy above 3 rules */

if (!validatePassword(password))
{
m_errorStackMessageName = “XX_PWD_RULE_CLASSES”;
return false;
}

return true;
}

/* Checks for a pattern match */
private boolean hasPattern(String p_password,String p_pattern)
{
Pattern p = Pattern.compile(p_pattern);
Matcher m = p.matcher(p_password);
if (m.find())
return true;
else
return false;
}

/* Implements following rules
1) Contains A-Z
2) Contains a-z
3) Contains 0-9
4) Contains ?!%$#
*/

private boolean validatePassword(String password)
{
int count=0;
if (hasPattern(password,”[A-Z]”))
count++;
if (hasPattern(password,”[a-z]”))
count++;
if (hasPattern(password,”[0-9]”))
count++;
if (hasPattern(password,”[?!%$#,.&/\'{}[]”)) /*isteğe göre güncellenebilir özel karakterler*/
count++;
if (count<3)
return false;
else
return true;
}

/* Validates password does not contain pattern */
/*private boolean validatePasswordNotContainsPattern(String password,String pattern)
{
if (password.toLowerCase().contains(pattern.toLowerCase()))
return true;
else
return false;
}*/

 

/* Validate username = password */
private boolean validateNoUsername(String p_username, String p_password)
{
if (p_username.toLowerCase().equals(p_password.toLowerCase()))
return true;
else
return false;
}

boolean validateNoRepeats(String p_password)
{
for(int i = 1; i < p_password.length(); i++)
if(p_password.charAt(i) == p_password.charAt(i – 1))
return false;

return true;
}

private String m_errorStackMessageName;

}

Not: getErrorStackApplicationName metodunun geri dönüş değeri olarak sistemde tanımlı olan custom geliştirmelerin yüklendiği uygulama yazılımı seçilmelidir.

https://blogs.oracle.com/manojmadhusoodanan/custom-password-rules sitesinden referans alınmıştır.

 

 

 

 

Ozan Arıkan

1988 İstanbul doğumlu. İstanbul Üniversitesi Yönetim Bilişim
Sistemlerinden mezun oldu. 2012 yılından Beri Oracle e-Business
Suite Uygulama Geliştirme Fonksiyonel ve Teknik Danışman olarak
DbOptimize bünyesinde kariyerine devam etmektedir.
Mail: oznarkn@gmail.com
Ozan Arıkan


1 Yorum+ Yorum Ekle

  • Ozan çok temiz bir makale eline sağlık

Yorum yapın

*