Skip to content

Conversation

@OyvindLGjesdal
Copy link
Contributor

@OyvindLGjesdal OyvindLGjesdal commented Jul 17, 2025

fixes #2186

I think that the exception comes from here and that the else block should return a forbidden instead.

The other location in shiro that uses SC_UNAUTHORIZED sets the header in HttpAuthenticationFilter.java
:

        LOGGER.debug("Authentication required: sending 401 Authentication challenge response.");

        HttpServletResponse httpResponse = WebUtils.toHttp(response);
        httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
        String authcHeader = getAuthcScheme() + " realm=\"" + getApplicationName() + "\"";
        httpResponse.setHeader(AUTHENTICATE_HEADER, authcHeader);
        return false;
    }

this wouldn't make any sense to include in this else block imo, since the user is already logged in.

Other http clients may be less strict than the java httpclient on the contents of a returned 401.

Hope I didn't overlook anything and that it isn't just a user error from my side.

Following this checklist to help us incorporate your contribution quickly and easily:

  • Make sure there is a GitHub issue filed
    for the change (usually before you start working on it). Trivial changes like typos do not
    require a GitHub issue. Your pull request should address just this issue, without pulling in other changes.
  • Each commit in the pull request should have a meaningful subject line and body.
  • Format the pull request title like [#XXX] - Fixes bug in SessionManager,
    where you replace #XXX with the appropriate GitHub issue. Best practice
    is to use the GitHub issue title in the pull request title and in the first line of the commit message.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • add fixes #XXX if merging the PR should close a related issue.
  • Run mvn verify to make sure basic checks pass. A more thorough check will be performed on your pull request automatically.
  • If you have a group of commits related to the same change, please squash your commits into one and force push your branch using git rebase -i.
  • Committers: Make sure a milestone is set on the PR

Trivial changes like typos do not require a GitHub issue (javadoc, comments...).
In this case, just format the pull request title like [DOC] - Add javadoc in SessionManager.

If this is your first contribution, you have to read the Contribution Guidelines

If your pull request is about ~20 lines of code you don't need to sign an Individual Contributor License Agreement
if you are unsure please ask on the developers list.

To make clear that you license your contribution under the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.

@OyvindLGjesdal OyvindLGjesdal force-pushed the change-to-forbidden-when-logged-in branch 2 times, most recently from b892a07 to 53d9222 Compare July 17, 2025 21:38
@lprimak lprimak added this to the 2.0.6 milestone Jul 17, 2025
@lprimak lprimak force-pushed the change-to-forbidden-when-logged-in branch from 53d9222 to 816e768 Compare July 18, 2025 00:00
@lprimak lprimak merged commit 1a605d6 into apache:main Jul 18, 2025
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] stdlib java httpclient returns an exception on some shiro.ini setups when authenticated but not authorized

2 participants