Я следовал этому руководству , чтобы настроить пользователя ejbuser
с паролем 12345678
и ролью appCitas
. Инструкции, которым я следовал:
C: \ wildfly-14.0.1.Final \ Bin> JBoss-cli.bat
Вы отключены в данный момент. Введите «connect» для подключения к серверу или «help» для получения списка поддерживаемых команд.
[отключено /] подключить
[standalone @ localhost: 9990 /] /subsystem=elytron/filesystem-realm=proxyRealm:add(path=proxy-realm-users,relative-to=jboss.server.config.dir)
{"исход" => "успех"}
[standalone @ localhost: 9990 /] / subsystem = elytron / filesystem-realm = proxyRealm: add-identity (identity = ejbuser)
{"исход" => "успех"}
[standalone @ localhost: 9990 /] / subsystem = elytron / filesystem-realm = proxyRealm: набор-пароль (identity = ejbuser, clear = {пароль = 12345678})
{"исход" => "успех"}
[standalone @ localhost: 9990 /] / subsystem = elytron / filesystem-realm = proxyRealm: add-identity-attribute (identity = ejbuser, name = Roles, value = ["guest", "appCitas"])
{"исход" => "успех"}
[standalone @ localhost: 9990 /] / subsystem = elytron / simple-role-decoder = атрибут from-role: add (attribute = Roles)
{"исход" => "успех"}
[standalone @ localhost: 9990 /] / subsystem = elytron / security-domain = proxySD: add (default-realm = proxyRealm ,missions-mapper = default-Разрешение-Mapper, Realms = [{realm = proxyRealm, role- декодер = от-ролей-атрибутов}, {сфера = локальная}]) * * тысяча двадцать восемь
{"исход" => "успех"}
[standalone @ localhost: 9990 /] / subsystem = elytron / sasl-authentication-factory = proxy-application-sasl-autentication: add (механизм-конфигурации = [{имя-механизма = JBOSS-LOCAL-USER, realm- картостроитель = локальную}, {механизм имя = DIGEST-MD5, механизм-Холдинговая-конфигурация = [{-имя области = proxyRealm}]}, {механизм имя = BASIC, механизм-Холдинговые-конфигурации = [{область-имя = proxyRealm}]}], SASL-сервер-завод = настроено, безопасность домен = proxySD)
{"исход" => "успех"}
[standalone @ localhost: 9990 /] / subsystem = ejb3 / application-security-domain = other: add (security-domain = proxySD)
{"исход" => "успех"}
[standalone @ localhost: 9990 /] / subsystem = remoting / http-connector = http-remoting-connector: write-attribute (имя = фабрика аутентификации sasl, значение = proxy-application-sasl-autentication)
{
"исход" => "успех",
"заголовки ответа" => {
"операция требует перезагрузки" => истина,
"process-state" => "требуется перезагрузка"
}
}
В ми EJB у меня есть
@WebService(
endpointInterface = "es.ssib.otic.test.prototipoEjbCitas.ApiCitasPublico",
name = "ApiCitasEjb")
@RolesAllowed("apiCitas")
@Stateless
public class ApiCitasPublicoImpl
implements ApiCitasPublico {
@Override
public @XmlElement(name = "pacienteCitaResponse", required = true) PacienteCitaResponse getPacienteCita(
@WebParam(name = "datosSolicitante") @XmlElement(required = true) IdPeticion idPaciente) {
...
}
И мой jboss-app.xml
равен
<?xml version="1.0" encoding="UTF-8"?>
<jboss-app>
<security-domain>other</security-domain>
</jboss-app>
Ухо развернуто правильно, и оно не показывает никаких проблем с журналом, но я пытаюсь получить доступ к методу из SoapUI и добавляю базовую аутентификацию с:
- имя пользователя: ejbuser
- пароль: 12345678
- Домен: я пробовал с другими, proxySD, proxyRealm и оставил это поле пустым
- Превентивная аутентификация. Я объединил все вышеперечисленные значения «Домена» с «Использовать глобальные предпочтения» и «Профилактическая проверка подлинности».
Во всех случаях я получаю
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>WFLYEJB0364: Invocation on method: public es.ssib.otic.test.prototipoEjbCitas.beans.PacienteCitaResponse es.ssib.otic.test.prototipoEjbCitas.impl.ApiCitasPublicoImpl.getPacienteCita(es.ssib.otic.test.prototipoEjbCitas.beans.IdPeticion) of bean: ApiCitasPublicoImpl is not allowed</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Если я удалю конфигурацию безопасности, я смогу получить доступ через SoapUI без проблем.
Работа с WildFly 14.0.0.1 Final.
Примечание. Этот вопрос в некоторой степени связан с моим предыдущим , но, поскольку я переустанавливал wildfly и шаг за шагом следовал вышеупомянутому учебнику, я думаю, что лучше опубликовать его как отдельный вопрос.
<Ч />
Обновление
Следуя ответу @ fjuma, я настроил следующее:
[standalone @ localhost: 9990 /] / subsystem = elytron / http-authentication-factory = proxy-application-http-authentication: добавьте (http-сервер-механизм-фабрика = глобальный, security-domain = proxySD, механизм- конфигурации = [{имя-механизм = BASIC, mechanims-область-конфигурации = [{имя-область = proxyAD}]}])
{"исход" => "успех"}
[standalone @ localhost: 9990 /] / subsystem = undertow / application-security-domain = proxyAD: add (http-аутентификация-фабрика = proxy-application-http-аутентификация)
{"исход" => "успех"}
И изменив значение security-domain
в jboss-app.xml
на proxyAD
, я получаю ошибку при развертывании уха:
{
"WFLYCTL0412: Обязательные службы, которые не установлены:" => ["jboss.security.security-domain.proxyAD"],
"WFLYCTL0180: Службы с отсутствующими / недоступными зависимостями" => [
"jboss.deployment.subunit. \" prototipoEarCitas-0.0.1-SNAPSHOT.ear \ ". \" prototipoEjbCitas-0.0.1-SNAPSHOT.jar \ ". component.ApiCitasPublicoImpl.CREATE отсутствует [jboss.security.security-domain .proxyAD]»,
"jboss.ws.endpoint. \" prototipoEarCitas-0.0.1-SNAPSHOT.ear \ ". \" prototipoEjbCitas-0.0.1-SNAPSHOT.jar \ ". Отсутствует ApiCitasPublicoImpl [jboss.security.security-domain.proxyAD]]"
]
}