Hi Darran,
Did you get time to look at this reproducer? Any findings ?
Thanks,
Jim
On Thu, Apr 2, 2020 at 2:00 PM Jim Ma <ema(a)redhat.com> wrote:
Thanks Darran. I uploaded the war deployment and reproduce steps
readme
to
https://github.com/jimma/elytron-null-securitydomain.
Let me know if this helps to debug why the SecurityDomain is not
associated.
On Thu, Apr 2, 2020 at 12:33 AM Darran Lofthouse <
darran.lofthouse(a)jboss.com> wrote:
> TBH Jim, I think I would need to dig into the code with a debugger to
> double check what is happening there.
>
> SecurityDomain.getCurrent() will return null when no SecurityDomain is
> associated with the deployment, the DeploymentUnitProcessor added for the
> Elytron integration essentially checks what SecurityDomain name Undertow
> was going to use and then checks if it should swap in an Elytron
> SecurityDomain instead.
>
> If SecurityDomain association is being skipped due to the lack of a
> security-constraint we should probably revisit that as there are plenty of
> scenarios where association of a SecurityDomain would make sense even if
> the constraints are not defined in the web.xml.
>
>
> On Wed, Apr 1, 2020 at 11:29 AM Jim Ma <ema(a)redhat.com> wrote:
>
>> Hi Darran,
>>
>> The SecurityDomain.getCurrent() returns null when there is "other"
>> security domain in jboss-web.xml and no “security-constraint” defined
>> in web.xml like:
>>
>> -------------jboss-web.xml---------------------
>> <jboss-web>
>> <security-domain>other</security-domain>
>> </jboss-web>
>> --------------web.xml------------------------------
>> <web-app
>> version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
>>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
>> <servlet>
>> <servlet-name>TestService</servlet-name>
>>
>>
<servlet-class>org.jboss.test.ws.jaxws.samples.wsse.policy.jaas.ServiceImpl</servlet-class>
>> </servlet>
>> <servlet-mapping>
>> <servlet-name>TestService</servlet-name>
>> <url-pattern>/*</url-pattern>
>> </servlet-mapping>
>> </web-app>
>>
>> Does this mean Elytron security domain mapped by undertow "other"
>> application domain only is enforced/set for web deployment which contains <
>> security-constraint>deployment descriptor ?
>> When does SecurityDomain.getCurrent() return null value ?
>>
>> Thanks,
>> Jim
>>
>> On Mon, Mar 16, 2020 at 6:35 PM Darran Lofthouse <
>> darran.lofthouse(a)jboss.com> wrote:
>>
>>> Yes there should be no difference at runtime, if we identified the
>>> Elytron domain via the default security domain it should still be
>>> associated with the deployment in the same way.
>>>
>>> On Mon, Mar 16, 2020 at 10:33 AM Jim Ma <ema(a)redhat.com> wrote:
>>>
>>>> Will this work for Undertow default "other" application
security
>>>> domain's reference Elytron SecurityDomain ?
>>>>
>>>> On Mon, Mar 16, 2020 at 6:26 PM Darran Lofthouse <
>>>> darran.lofthouse(a)jboss.com> wrote:
>>>>
>>>>> Overall it is the SecurityDomain.getCurrent method you need: -
>>>>>
>>>>>
>>>>>
https://wildfly-security.github.io/wildfly-elytron/master-public/org/wild...
>>>>>
>>>>> If a SecurityDomain is associated with the Thread's context
class
>>>>> loader it will be returned.
>>>>>
>>>>> On Mon, Mar 16, 2020 at 10:22 AM Jim Ma <ema(a)redhat.com>
wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Mar 16, 2020 at 6:07 PM Darran Lofthouse <
>>>>>> darran.lofthouse(a)jboss.com> wrote:
>>>>>>
>>>>>>> I don't know if it will help but the SecurityDomain is
associated
>>>>>>> with the ClassLoader of the deployment, not sure if that
could be an
>>>>>>> alternative way for WS to access it.
>>>>>>>
>>>>>>> I'll try it . Can you please point me some code example
or test
>>>>>> code?
>>>>>>
>>>>>>
>>>>>>> The thing that is complicating it for now is the dual mode
with
>>>>>>> PicketBox, once we remove PicketBox a deployment will either
have an
>>>>>>> Elytron SecurityDomain or it will not.
>>>>>>>
>>>>>> Yes. Now webservice has to add many PicketBox or Elytron checks
to
>>>>>> do following actions. We wrap this as much as possible with
spi
>>>>>> interface.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>>
>>>>>>> On Fri, Mar 13, 2020 at 8:20 AM Jim Ma <ema(a)redhat.com>
wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Mar 12, 2020 at 8:12 PM Darran Lofthouse <
>>>>>>>> darran.lofthouse(a)jboss.com> wrote:
>>>>>>>>
>>>>>>>>> Is it possible to identify the revelevent
>>>>>>>>> DeploymentUnitProcessors in this process along with
their phase and
>>>>>>>>> priority so we can check the ordering.
>>>>>>>>>
>>>>>>>>
>>>>>>>> The "other"'s mapped Elytron security
domain service is
>>>>>>>> required to read in EndpointServiceDeploymentAspect.
It's installed
>>>>>>>> in Phase.INSTALL, Phase.INSTALL_WS_DEPLOYMENT_ASPECTS
priority. It's
>>>>>>>> running before UndertowDeploymentProcessor
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> What may be more appropriate is for the Undertow DUP
to attach
>>>>>>>>> something which identifies the SecurityDomain instead
of the web services
>>>>>>>>> DUP relying on internal API / repeating the same
checks already performed
>>>>>>>>> within Undertow.
>>>>>>>>>
>>>>>>>>> In the future we will be removing all of the
application security
>>>>>>>>> domain resources so coordinating using attachments
will hopefully also
>>>>>>>>> future proof any fix.
>>>>>>>>>
>>>>>>>>
>>>>>>>> It looks this attachment should be set in some Undertow
DUP
>>>>>>>> before UndertowDeploymentProcessor. WebService needs a
Securitycontext to
>>>>>>>> call the ejb ws endpoint method or webservice endpoint
method :
>>>>>>>>
>>>>>>>>
https://github.com/wildfly/wildfly/blob/master/webservices/server-integra...
>>>>>>>> Is there better api/approach to perform this kind of
method
>>>>>>>> invocation ?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Jim
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Darran Lofthouse.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, Mar 12, 2020 at 11:45 AM Jim Ma
<ema(a)redhat.com> wrote:
>>>>>>>>>
>>>>>>>>>> There is ws deployment failure issue[1] which is
caused by
>>>>>>>>>> Webservice subsystem doesn't correctly get
mapped elytron security domain
>>>>>>>>>> from web deployment's default
"other"
>>>>>>>>>> application security domain. I tried to fix this
by reading
>>>>>>>>>> Elytron security domain from Undertow started
services, but it looks now
>>>>>>>>>> ApplicationSecurityDomainService is private
static and it doesn't provide a
>>>>>>>>>> getter which allows to get Elytron security
domain. Webservice subsystem
>>>>>>>>>> requires an Undertow service like
ApplicationSecurityDomainService[2]
>>>>>>>>>> started by EJB subsystem to read the Elytron
security domain. Is it doable
>>>>>>>>>> to change Undertow's
ApplicationSecurityDomainService to provide mapped
>>>>>>>>>> security domain ? Or any better approach to get
the mapped Elytron domain ?
>>>>>>>>>>
>>>>>>>>>> [
1]https://issues.redhat.com/browse/WFLY-12765
>>>>>>>>>> [2]
>>>>>>>>>>
https://github.com/wildfly/wildfly/blob/master/ejb3/src/main/java/org/jbo...
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> Jim
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> wildfly-dev mailing list
>>>>>>>>>> wildfly-dev(a)lists.jboss.org
>>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/wildfly-dev
>>>>>>>>>
>>>>>>>>>