EBS Açılış Şifresinin Kurallar Dahilinde Girilmesi (R12) | orasistem | Oracle E-Business Suite Paylaşım Platformu
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

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

*