Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание Security Providers для Bea Weblogic 9.x / 7 сообщений из 7, страница 1 из 1
24.09.2007, 19:42:09
    #34822629
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание Security Providers для Bea Weblogic 9.x
Господа, кто-нибудь занимался этим ?
Ай нид хэлп.
Я не могу понять, как сделать свой RoleMapper и Authenticator.
Казалось бы — есть подробная документация http://edocs.bea.com/wls/docs92/dvspisec/index.html .
Вот только после прочтения остается больше вопросов, чем получено на них ответов.
Главный из них — где взять работающий пример, для начала?
Я не могу понять, как должен на самом деле выглядеть мой ...MBean в xml. Какие интерфейсы в нем имплементить? Как реализовывать ...MBeanImpl?
Просто ППЦ.

Ведь задача элементарна — получить список ролей из СУБД и привязать к пользователю (до этого получить собственный список групп для пользователя, но там попроще — я попробовал CustomDBMSAuthenticatorPlugin и осталось только побороть его в плане шифрования — заставить понять, что возвращаемый пароль представляет собой MD5-хэш).
...
Рейтинг: 0 / 0
24.09.2007, 20:39:30
    #34822700
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание Security Providers для Bea Weblogic 9.x
Отлично. В CustomDBMSAuthenticatorPlugin всё завертелось после дописывания идентификатора алгоритма в виде
Код: plaintext
 return  "{MD5}" + password;
...
Рейтинг: 0 / 0
24.09.2007, 20:41:12
    #34822704
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание Security Providers для Bea Weblogic 9.x
Вдобавок ко всему, DefaultAuthenticator необходимо сделать OPTIONAL и переместить его ниже (чтобы в заблуждение не вводил).

С Role Mapper'ом так и не понятно что делать :(
...
Рейтинг: 0 / 0
25.09.2007, 17:36:44
    #34825476
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание Security Providers для Bea Weblogic 9.x
Неужели никто не знает? Меня терзают сомнения — никто не пользуется Weblogic'ом или всем достаточно тех средств безопасности, который он предоставляет по-умолчанию (роли из LDAP с управлением через консоль).
...
Рейтинг: 0 / 0
26.09.2007, 12:52:50
    #34827459
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание Security Providers для Bea Weblogic 9.x
Вчера пробовал сделать ход конем — стукнуть Weblogic'овскому LDAP'у в мозг новыми ролями и условиями применения. Пробовал настраивать через XACML документ. Это ужоснах. Меня пугает то, что делают из XML'я. Хотя изучил в процессе, што такое LDAP и как с ним работать...
...
Рейтинг: 0 / 0
27.09.2007, 13:11:57
    #34830962
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание Security Providers для Bea Weblogic 9.x
Оууу, еееее.
Я ево победюл! Всё сделал по-взрослому.

В целом подобное решение (на MDF и автогенерации) оказалось красивым и эффективным.
С презрением вспоминаю realm'ы в Tomcat :)
...
Рейтинг: 0 / 0
27.09.2007, 14:06:12
    #34831235
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание Security Providers для Bea Weblogic 9.x
По всей видимости, нужно оставить подробное описание для потомков (меня уже не раз выручал подобный подход других людей на всяких разных форумах).

Реализация провайдеров безопасности для BEA Weblogic 9.x
Определения:
PR_PATH — корневой путь к проекту (C:\PROJECTS\xxx)

SECUR_PATH — путь к пакету, в котором лежат классы безопасности (C:\PROJECTS\xxx\src\com\xxx\weblogic\wl9x)

SECUR_PACKAGE — наименование пакета (com.xxx.weblogic.wl9x)

BEA_PATH —путь к установленному BEA (C:\bea9Home)

CLASS_NAME — наименование класса, реализующего провайдер безопасности (MyRoleMapper)


1) Создаем XML-файл с описанием MDB бина.
CLASS_NAME .xml (должен быть размещен в SECUR_PATH, там же должен лежать файл commo.dtd, который можно найти в папке BEA_PATH\weblogic92\server\lib\)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<?xml version="1.0" ?>
<!DOCTYPE MBeanType SYSTEM "commo.dtd">

<MBeanType
 Name          = " CLASS_NAME "
 DisplayName   = " CLASS_NAME "
 Package       = " SECUR_PACKAGE .authorization"
 Implements    = "weblogic.management.security.authorization.RoleMapper"
 PersistPolicy = "OnUpdate"
 Description   = "This MBean represents configuration attributes for the Forward Role Mapping
                  provider.
                  <p>
                  "
>

 <MBeanAttribute
  Name          = "ProviderClassName"
  Type          = "java.lang.String"
  Writeable     = "false"
  Preprocessor  = "weblogic.management.configuration.LegalHelper.checkClassName(value)"
  Default       = "& quot; SECUR_PACKAGE .authorization. CLASS_NAME ProviderImpl& quot;"
  Description   = "The name of the Java class used to load the Forward Role Mapping provider."
 />

 <MBeanAttribute
  Name          = "Description"
  Type          = "java.lang.String"
  Writeable     = "false"
  Default       = ""Forward Role Mapping Provider""
  Description   = "A short description of the Forward Role Mapping provider."
 />

 <MBeanAttribute
  Name          = "Version"
  Type          = "java.lang.String"
  Writeable     = "false"
  Default       = ""1.0""
  Description   = "The version number of the Forward Role Mapping provider."
 />


</MBeanType>

2) Создаем класс, представляющий собой провайдер безопасности.
CLASS_NAME ProviderImpl (находящйися в пакете SECUR_PACKAGE .authorization)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
package  SECUR_PACKAGE .authorization;

import java.util.*;

import javax.security.auth.*;

import weblogic.management.security.*;
import weblogic.security.service.*;
import weblogic.security.spi.*;
import weblogic.security.spi.ApplicationInfo.*;

/**
...
 * <p>
 * <b>Role Mapper Provider.</b>
 *
 * <p>
 * Этот провайдер занимается маппингом ролей для пользователей (в дальнейшем возможен маппинг на
 * любые сущности).
 *
 * <p>
 * Файлы в этой библиотеки должны собираться с помощью bat-файла weblogic_build_security_providers.bat
 * (или с помощью таска "BuildSecurityProviders".
 *
 * <p>
 * Созданная библиотека будет называться securityProviders.jar.
 *
 * <p>
 * Библиотеку следует поместить в каталог <b>/usr/local/bea9home/weblogic92/server/lib/mbeantypes</b>
 *
 *
 * @author raidan
 * @version 1.0
 */
public class  CLASS_NAME ProviderImpl implements DeployableRoleProviderV2, RoleMapper,
        VersionableApplicationProvider

{
    private String description; // a description of this provider
    private static final Map NO_ROLES = Collections.unmodifiableMap(new HashMap(1)); // used when no roles are found

    public void initialize (ProviderMBean mbean, SecurityServices services)
    {
…
    }

    public String getDescription ()
    {
        return description;
    }

    public void shutdown ()
    {
…
    }

    public RoleMapper getRoleMapper ()

    {
        // Since this class implements both the DeployableRoleProvider
        // and RoleMapper interfaces, this object is the
        // role mapper object so just return "this".
        return this;
    }

    public Map getRoles (Subject subject, Resource resource, ContextHandler handler)
    {
…
// Метод getRoles возвращает Map ролей, заполняемых по принципу:
// map.put("НАИМЕНОВАНИЕ_РОЛИ", new RoleImplement(...));
// где RoleImplement — класс, имплеменирующий интерфейс weblogic.security.service.SecurityRole
        return NO_ROLES;
    }


    public DeployRoleHandle startDeployRoles (ApplicationInfo application)
    {
…
    }

    public void deployRole (DeployRoleHandle handle, Resource resource, String roleName,
                            String[] principalNames)
    {
…
    }

    public void endDeployRoles (DeployRoleHandle handle)
    {
…
    }

    public void undeployAllRoles (DeployRoleHandle handle)
    {
…
    }

    public void deleteApplicationRoles (ApplicationInfo application)
    {
…
    }


    public void createApplicationVersion (String appId, String sourceAppId)
    {
…
    }


    public void deleteApplicationVersion (String appId)
    {
…
    }

    public void deleteApplication (String appName)
    {
…
    }

}

3) Создаем интерфейсы и библиотеку. Для этого используется следующий набор команд:
В Set’ах, оканчивающиеся на _REV записывается путь с обратными слэшами (вместо C:\PROJECTS\xxx должно быть C:/PROJECTS/xxx)

Файл weblogic_build_security_providers.bat

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
@set BEA_PATH=C:\bea9Home

@set SECUR_PACKAGE=com.xxx.weblogic.wl9x

@set SECUR_PATH_REV=C:/PROJECTS/xxx/src/com/xxx/weblogic/wl9x
@set SECUR_PATH=C:\PROJECTS\xxx\src\com\xxx\weblogic\wl9x

@set PR_PATH_REV=C:/PROJECTS/xxx
@set PR_PATH=C:\PROJECTS\xxx

@set CLASS_NAME=MyRoleMapper

@echo Generating implementation classes...

@"%BEA_PATH%\jdk150_04\bin\java" -classpath "%BEA_PATH%\weblogic92\server\lib\weblogic.jar" -DMDF=%SECUR_PATH_REV%/%CLASS_NAME%.xml -Dfiles=%PR_PATH_REV%/src/ -DcreateStubs=true weblogic.management.commo.WebLogicMBeanMaker

@echo Preparing...

@move /Y %PR_PATH%\src\%CLASS_NAME%Impl.java %SECUR_PATH%\authorization\%CLASS_NAME%Impl.java

@call weblogic_clean_security_providers.bat

@echo Generating MJF for security providers...

@"%BEA_PATH%\jdk150_04\bin\java" -classpath "%BEA_PATH%\weblogic92\server\lib\weblogic.jar;%BEA_PATH%\jdk150_04\lib\tools.jar;%PR_PATH%\classes\;" -DMJF=securityProviders.jar -Dfiles=%SECUR_PATH_REV%/authorization -Dverbose weblogic.management.commo.WebLogicMBeanMaker

@call weblogic_clean_security_providers.bat

Файл weblogic_clean_security_providers.bat

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@set SECUR_PATH=C:\PROJECTS\xxx\src\com\xxx\weblogic\wl9x

@echo Cleaning cache...

@rmdir /S /Q %SECUR_PATH%\authorization\com\

@rmdir /S /Q %SECUR_PATH%\authorization\META-INF\

@rmdir /S /Q %SECUR_PATH%\authorization\schemacom_bea_xml\

@rmdir /S /Q %SECUR_PATH%\authorization\weblogic\
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание Security Providers для Bea Weblogic 9.x / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]