Hi everyone,

I've written a Jenkins plugin to implement my own authentication mechanism
by extending hudson.security.SecurityRealm. Now I'm trying to create my own
custom "Access Denied" page, to display when a user types in the wrong
password or simply doesn't have access. To do this, I've created a file
called accessDenied.jelly. So let's say the name of my company is "Foo" and
the structure of my plugin (simplified here for practical reasons) is this:

src
|---main
    |---java
    |   |---com
    |       |---foo
    |           |---authn
    |               |---MySecurityRealm.java
    |---resources
    |   |---com
    |       |---foo
    |           |---authn
    |               |---MySecurityRealm
    |                   |---config.jelly
    |                   |---accessDenied.jelly
    |---webapp
        |---images
            |---foo.png

Now, I want to display my company logo -The foo.png file in the tree above-
in my custom error page accessDenied.jelly. Again, for the sake of
simplicity let's assume the short name of my plugin is simply foo and this
is the content of accessDenied.jelly:

<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler"
xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson"
xmlns:f="/lib/form">
    <l:layout title="${%Login Error}" permission="${app.ANONYMOUS}">
        <l:main-panel>
            <h2>Access Denied</h2>
            <span class="message">
                You don't have access to this Jenkins console.
            </span>
            <img src="${app.getRootUrl()}plugin/foo/images/foo.png"/>
        </l:main-panel>
    </l:layout>
</j:jelly>

My problem here is I'm getting a broken image link for foo.png because the
server returns a HTTP 403 Forbidden on serving it. Implying the user must
be authenticated in order to access the static content in a plugin.

If instead of my company logo I use ${app.getRootUrl()}/favicon.ico for the
source of my image, I do get the Jenkins icon displayed.

How can I make the static content in my plugin accessible without
authentication? or public?

Notice I tried setting permission="${app.ANONYMOUS}" in my Jelly file, but
this refers to the view being rendered, not to any static assets referenced
by it.
If anyone would like the extra rep points in StackOverflow, I've posted the
exact same question here:

https://stackoverflow.com/q/47830458/4124574

Thank you,

                                              Miguelángel Fernández M.

Life is what happens to you while you're busy making other plans.


        --John Lennon.

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-dev/CAK2td25JiJ%3DoMzUYBvg%2BH_17nfm0zREpM%3DYnJuKaORHJNDoyng%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
  • [no subject] Miguelangel Fernandez
    • Re: Daniel Beck
    • Re: Jesse Glick
    • Re: Miguelangel Fernandez

Reply via email to