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
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
Latest posts by Ozan Arıkan (see all)
- Xslt üzerinde değişken tanımlanması - 07 Mart 2021
- Weblogic varsayılan java dizinin değiştirilmesi - 08 Temmuz 2020
- Jdeveloper üzerinde kaynak kodlara erişim eklentisi - 30 Mayıs 2020
Ozan çok temiz bir makale eline sağlık