Jan (or anyone),

> There's also a jetty-specific feature that if the realm-name is omitted from the <login-config> then we'll automatically select the first LoginService that has been defined for a Server instance (eg as an addBean() as has been shown in the doco and in the demo-base/etc/test-realm.xml).

Aha, when I delete the realm-name from the <login-config> in web.xml, I see that my HashLoginService evidently didn't get registered even though the etc/realm.xml has

<Configure id="Server" class="org.eclipse.jetty.server.Server">
    <Call name="addBean">
      <Arg>
        <New class="org.eclipse.jetty.security.HashLoginService">
          <Set name="name">Test Realm</Set>
<Set name="config"><Property name="jetty.demo.realm" default="etc/realm.properties"/></Set>
          <Set name="refreshInterval">0</Set>
        </New>
      </Arg>
    </Call>

    <Get class="org.eclipse.jetty.util.log.Log" name="rootLogger">
<Call name="warn"><Arg>demo test-realm is deployed. DO NOT USE IN PRODUCTION!</Arg></Call>
    </Get>
</Configure>

And on startup I see:

2015-10-01 12:50:39.793:WARN::main: demo test-realm is deployed. DO NOT USE IN PRODUCTION!

2015-10-01 12:50:40.203:WARN:oejw.WebAppContext:main: Failed startup of context o.e.j.w.WebAppContext@234bef66{/,file:///Users/priot/pr/jetty-base/webapps/ROOT/,STARTING}{/ROOT} java.lang.IllegalStateException: No LoginService for org.eclipse.jetty.security.authentication.BasicAuthenticator@47db50c5 in org.eclipse.jetty.security.ConstraintSecurityHandler@5c072e3f at org.eclipse.jetty.security.authentication.LoginAuthenticator.setConfiguration(LoginAuthenticator.java:76) at org.eclipse.jetty.security.SecurityHandler.doStart(SecurityHandler.java:354) at org.eclipse.jetty.security.ConstraintSecurityHandler.doStart(ConstraintSecurityHandler.java:448)

So there seems to be a bug in docs or code since the HashLoginService setup is quietly consumed but seems to have no effect.

And in case anyone is still reading, once again, is the "jetty.demo.realm" supposed to mean anything or match anything???

    <Property name="jetty.demo.realm" default="etc/realm.properties"/>

Thanks,
Bill

On 9/30/2015 1:29 AM, Jan Bartel wrote:
Bill,

If you use the same realm-name in the <login-config> element of multiple webapps, they'll all share the same LoginService.

There's also a jetty-specific feature that if the realm-name is omitted from the <login-config> then we'll automatically select the first LoginService that has been defined for a Server instance (eg as an addBean() as has been shown in the doco and in the demo-base/etc/test-realm.xml).

Jan

On 30 September 2015 at 18:10, Bill Ross <[email protected] <mailto:[email protected]>> wrote:

    Hi Jan,

    So if web.xml only goes in a webapp, how can a realm defined in
    one cover the contents of ROOT?

    I will see how you change that text and try the result.

    Thanks,
    Bill


    -------- Original message --------
    From: Jan Bartel
    Date:09/30/2015 12:46 AM (GMT-08:00)
    To: JETTY user mailing list
    Subject: Re: [jetty-users] JAAS questions

    Hi Bill,

    web.xml does not go into the ${jetty.base} directory. It can only
    go into a WEB-INF directory of a webapp, such as a webapp inside
    of the ${jetty.base}/webapps directory, which is the default
    deploy directory.

    Also, I will change the text on the Security page which mentions
    jetty.xml - this is no doubt historical from before we had the
    distinction between ${jetty.home} and ${jetty.base}.  And no, I do
    NOT recommend anyone edits ${jetty.home} - there should be very
    very very few cases where this is necessary (and this isn't one of
    them :)).

    cheers
    Jan

    On 30 September 2015 at 17:35, Bill Ross <[email protected]
    <mailto:[email protected]>> wrote:

        Jan, there was no jetty-base etc dir before I created it to
        put that file in. I thought jetty xmls were additive, but it
        sounds like the base one tromped the home one. I have home set
        to the distribution of my last build of the current tree.

        The configuring security link brings me back to my previous
        question about whether a jetty-base/web.xml will cover both my
        webapps/x.war and ROOT. That page also recommends adding the
        HashLoginService in ${jetty.home}/jetty.xml - but should we as
        admins modify jetty.home files? All the more so in my case
        because a build could overwrite my changes.

        Thanks,
        Bill


        -------- Original message --------
        From: Jan Bartel
        Date:09/30/2015 12:10 AM (GMT-08:00)
        To: JETTY user mailing list
        Subject: Re: [jetty-users] JAAS questions

        Bill,

        Don't look at that wiki unless you are using an old version of
        jetty. The recent documentation is here:
        https://www.eclipse.org/jetty/documentation/current/.

        In particular, here's a link to configuring realms:
        
https://www.eclipse.org/jetty/documentation/current/configuring-security-authentication.html

        It looks like you've deleted all the content out of the
        etc/jetty.xml file that should be there and just put in a
        realm configuration.  Leave the ${jetty.base}/etc/jetty.xml
        file as it is originally, don't edit it.  The idea would be to
        create a new ${jetty.base} directory and then add files to it
        to configure things the way you want - jetty config files are
        generally additive.  Say your new base is called "my-base",
        then edit my-base/my-realm.xml - you could copy in the
        contents of demo-base/etc/test-realm.xml for a start and
        change it as appropriate. Edit your my-base/start.ini file and
        put in a line with just etc/my-realm.xml on it (similarly to
        demo-base/start.ini has a line with etc/test-realm.xml on it).
        This will add your etc/my-realm.xml file to your command line
        when you run jetty.

        Jan

        On 30 September 2015 at 16:44, Bill Ross <[email protected]
        <mailto:[email protected]>> wrote:

            Thanks Jan,

            Seeing that the HashLoginService is sufficient, and that
            it is associated with a realm, I found

            https://wiki.eclipse.org/Jetty/Tutorial/Realms

            and per that I added an /etc/jetty.xml file:

            <Configure id="Server"
            class="org.eclipse.jetty.server.Server">

                <Call name="addBean">
                  <Arg>
                    <New
            class="org.eclipse.jetty.security.HashLoginService">
                      <Set name="name">Test Realm</Set>
                      <Set name="config"><SystemProperty
            name="jetty.home" default="."/>/etc/realm.properties</Set>
                      <Set name="refreshInterval">0</Set>
                    </New>
                  </Arg>
                </Call>

            </Configure>

            However when I start jetty with this file and a simple
            etc/realm.properties file, I get this on loading the
            standard jetty-http.xml:

            2015-09-29 23:28:12.676:WARN:oejx.XmlConfiguration:main:
            Config error at <Call name="addConnector"><Arg>| <New
            id="httpConnector"
            class="org.eclipse.jetty.server.ServerConnector"><Arg
            name="server"><Ref refid="Server"/></Arg><Arg
            name="acceptors" type="int"><Property
            name="jetty.http.acceptors" deprecated="http.acceptors"
            default="-1"/></Arg><Arg name="selectors"
            type="int"><Property name="jetty.http.selectors"
            deprecated="http.selectors" default="-1"/></Arg><Arg
            name="factories">| <Array
            type="org.eclipse.jetty.server.ConnectionFactory"><Item>|
            <New
            class="org.eclipse.jetty.server.HttpConnectionFactory"><Arg 
name="config"><Ref
            refid="httpConfig"/></Arg></New>| </Item></Array>|
            </Arg><Set name="host"><Property name="jetty.http.host"
            deprecated="jetty.host"/></Set><Set name="port"><Property
            name="jetty.http.port" deprecated="jetty.port"
            default="8080"/></Set><Set name="idleTimeout"><Property
            name="jetty.http.idleTimeout" deprecated="http.timeout"
            default="30000"/></Set><Set name="soLingerTime"><Property
            name="jetty.http.soLingerTime"
            deprecated="http.soLingerTime" default="-1"/></Set><Set
            name="acceptorPriorityDelta"><Property
            name="jetty.http.acceptorPriorityDelta"
            deprecated="http.acceptorPriorityDelta"
            default="0"/></Set><Set name="acceptQueueSize"><Property
            name="jetty.http.acceptQueueSize"
            deprecated="http.acceptQueueSize"
            default="0"/></Set></New>| </Arg></Call>
            java.lang.reflect.InvocationTargetException in
            
file:/Users/priot/jetty/org.eclipse.jetty.project/jetty-distribution/target/distribution/etc/jetty-http.xml
            java.lang.reflect.InvocationTargetException
                    at
            sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                    at
            
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                    at
            
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                    at java.lang.reflect.Method.invoke(Method.java:497)
                    at
            org.eclipse.jetty.start.Main.invokeMain(Main.java:214)
                    at org.eclipse.jetty.start.Main.start(Main.java:457)
                    at org.eclipse.jetty.start.Main.main(Main.java:75)
            Caused by: java.lang.reflect.InvocationTargetException
                    at
            sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
            Method)
                    at
            
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
                    at
            
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
                    at
            java.lang.reflect.Constructor.newInstance(Constructor.java:422)
                    at
            org.eclipse.jetty.util.TypeUtil.construct(TypeUtil.java:627)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:782)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1233)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:1138)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newArray(XmlConfiguration.java:860)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1237)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:1138)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:766)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1233)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:1138)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.access$500(XmlConfiguration.java:274)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration$AttrOrElementNode.getList(XmlConfiguration.java:1366)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration$AttrOrElementNode.getList(XmlConfiguration.java:1341)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.call(XmlConfiguration.java:704)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:417)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:358)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:259)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1498)
                    at
            java.security.AccessController.doPrivileged(Native Method)
                    at
            
org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1435)
                    ... 7 more
            Caused by: java.lang.IllegalArgumentException: Null
            HttpConfiguration
                    at
            
org.eclipse.jetty.server.HttpConnectionFactory.<init>(HttpConnectionFactory.java:45)
                    ... 31 more


            Speaking of problems, I just did a git pull in case the
            problem was an earlier pull, and got this on building:

            [ERROR] symbol:   class NamingContext  <== seems to be gone
            [ERROR] location: class
            org.eclipse.jetty.jndi.local.localContextRoot

            Thanks,
            Bill



            On 9/29/2015 6:44 PM, Jan Bartel wrote:
            Hi Bill,

            I think you'll get a bit more clarity if you look in
            demo-base/webapps at the test-jaas.xml and test-jaas.war
            file. This is the example webapp for configuring and
            using jaas.




                My question is, why have two password files? Are both
                required?


            There are different password files for different purposes:

            etc/test-realm.xml configures a HashLoginService that is
            set as the default login service on the Server object and
            references etc/realm.properties with the passwords and roles
            etc/realm.properties is also referenced by the
            webapp-specific HashLoginService configured for the test
            webapp in webapps/test.xml
            etc/login.conf is a jaas configuration file. The
            webapps/test-jaas.xml context file sets up a
            JAASLoginService for the webapps/test-jaas.war webapp,
            which will use the etc/login.conf file to point to the
            passwords and roles defined in etc/login.properties.


            So, HashLoginService is an alternative to
            JAASLoginService and they both have different config
            files and formats. The demo-base has both to cater to the
            multiple different webapps deployed in it.


            regards
            Jan



                Also, etc/test-realm.xml creates a HashLoginService,
                is that complementary to JAASLoginService? I don't
                see that in demo-base/etc/ at least. I expected to
                see a Configure Server somewhere at the top level of
                the demo bringing in JAASLoginService based on

                
http://www.eclipse.org/jetty/documentation/current/jaas-support.html

                Third question is, why is there no demo-base/web.xml?
                It seems I need one because I want to password
                protect both war/servlets and ROOT:

                --webapp/my.war  [2 servlets with a web.xml]
                --webapp/ROOT

                It seems I need to define a realm that encompasses
                them? Would a ${jetty.base}/web.xml like this be
                sufficient (per the jaas-support page)?

                <login-config>
                <auth-method>FORM</auth-method>
                <realm-name>mywholesite</realm-name>
                <form-login-config>
                <form-login-page>/login/login</form-login-page>   <==
                example?
                <form-error-page>/login/error</form-error-page>   <==
                example? (e.g. if a param is passed)
                </form-login-config>
                </login-config>

                And it would automatically cover the war and ROOT, or
                would that need to be spelled out?
                The web.xml info I see on Google looks generally like
                servlet config, which I have down in my war's web.xml.

                Thanks,
                Bill

                _______________________________________________
                jetty-users mailing list
                [email protected] <mailto:[email protected]>
                To change your delivery options, retrieve your
                password, or unsubscribe from this list, visit
                https://dev.eclipse.org/mailman/listinfo/jetty-users




-- Jan Bartel <[email protected] <mailto:[email protected]>>
            www.webtide.com <http://www.webtide.com>
            /Expert assistance from the creators of Jetty and CometD/



            _______________________________________________
            jetty-users mailing list
            [email protected] <mailto:[email protected]>
            To change your delivery options, retrieve your password, or 
unsubscribe from this list, visit
            https://dev.eclipse.org/mailman/listinfo/jetty-users


            _______________________________________________
            jetty-users mailing list
            [email protected] <mailto:[email protected]>
            To change your delivery options, retrieve your password,
            or unsubscribe from this list, visit
            https://dev.eclipse.org/mailman/listinfo/jetty-users




-- Jan Bartel <[email protected] <mailto:[email protected]>>
        www.webtide.com <http://www.webtide.com>
        /Expert assistance from the creators of Jetty and CometD/


        _______________________________________________
        jetty-users mailing list
        [email protected] <mailto:[email protected]>
        To change your delivery options, retrieve your password, or
        unsubscribe from this list, visit
        https://dev.eclipse.org/mailman/listinfo/jetty-users




-- Jan Bartel <[email protected] <mailto:[email protected]>>
    www.webtide.com <http://www.webtide.com>
    /Expert assistance from the creators of Jetty and CometD/


    _______________________________________________
    jetty-users mailing list
    [email protected] <mailto:[email protected]>
    To change your delivery options, retrieve your password, or
    unsubscribe from this list, visit
    https://dev.eclipse.org/mailman/listinfo/jetty-users




--
Jan Bartel <[email protected] <mailto:[email protected]>>
www.webtide.com <http://www.webtide.com>
/Expert assistance from the creators of Jetty and CometD/



_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to