Skip to content

validate redirect origin in oidc rp sign-in completion#3241

Open
dxbjavid wants to merge 2 commits into
apache:mainfrom
dxbjavid:oidc-rp-redirect-origin-check
Open

validate redirect origin in oidc rp sign-in completion#3241
dxbjavid wants to merge 2 commits into
apache:mainfrom
dxbjavid:oidc-rp-redirect-origin-check

Conversation

@dxbjavid

Copy link
Copy Markdown
Contributor

when the rp sign-in flow completes, OidcRpAuthenticationService redirects the browser to the state value, which OidcRpAuthenticationFilter copies straight from the current request parameters, so a request such as /rp/complete?state=https://evil.example against an authenticated session returns a 303 to an arbitrary external host, an open redirect. the legitimate value is always the application's own request uri, so completeAuthentication now only honours a location that is relative or shares the same scheme and authority as the base path, otherwise it falls back to the configured default location. the added test covers the cross-origin, protocol-relative and userinfo-host variants.

Signed-off-by: dxbjavid <dxbjavid@gmail.com>
// a path-only reference is resolved by the browser against the current request
return true;
}
String basePath = (String)mc.get("http.base.path");

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wondering if we could we use rc.getUriInfo().getAbsolutePath() here to verify scheme and authority ?

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.

2 participants