Skip to content

Returning SignOutResult produces an incorrectly formatted return URL #43383

@ryancole

Description

@ryancole

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

I have an ASP.NET Core MVC application that has a sign out page. The sign out page returns a SignOutResult. The code is below ...

namespace RadixPortalWeb.Pages
{
    [AllowAnonymous]
    public class LogOutModel : PageModel
    {
        public IActionResult OnGet()
        {
            var schemes = new[]
            {
                OpenIdConnectDefaults.AuthenticationScheme,
                CookieAuthenticationDefaults.AuthenticationScheme
            };

            return new SignOutResult(schemes);
        }
    }
}

For some reason, this works absolutely fine for me on my local development machine but after publishing to Azure it produces an incorrectly formatted return URL. The return URL that it's producing looks like the following ...

https://auth.wib.radixdata.com/connect/endsession?post_logout_redirect_uri=https%3A%2F%2Fportal.wib.radixdata.com%2Fsignout-callback-oidc&id_token_hint=eyJhbGciOiJSUzI1NiIsImtpZCI6IkQ0RjdBNEM4RDA1RDBFODc1NzUxMzlBMUVCRjY2MDE5IiwidHlwIjoiSldUIn0.eyJuYmYiOjE2NjA4ODY3OTksImV4cCI6MTY2MDg4NzA5OSwiaXNzIjoiaHR0cHM6Ly9hdXRoLndpYi5yYWRpeGRhdGEuY29tIiwiYXVkIjoicmFkaXgtcG9ydGFsIiwibm9uY2UiOiI2Mzc5NjQ4MzU5MzE4NDk4NjMuT1RreE5tSTRZemt0TURKa01DMDBZVEF5TFdJM01qZ3RPR1EwT1Rkak9EQTJZVEk0WkdKbU5qUXdNamt0T0RWbFppMDBOMlEwTFRoaFpEQXRObVJtWXpNNU1XWmhORFl6IiwiaWF0IjoxNjYwODg2Nzk5LCJhdF9oYXNoIjoiNWJIWWl0Y1hpRWRkYnNUUlpZMHM0USIsInNfaGFzaCI6IjJBeE1jUjBJXzRIS29tOTk4Y0E0NWciLCJzaWQiOiI0ODdFMkZDRjdCNzRCQUIyNzBBRkE3N0YyNkVEN0Y0RSIsInN1YiI6IjYwOTBmMDQ0LTNkNzItNDVmNi04ZWE0LTdkNmM2OTZlMjk0MCIsImF1dGhfdGltZSI6MTY2MDg4Njc5OCwiaWRwIjoibG9jYWwiLCJyb2xlIjoiU3lzQWRtaW4iLCJuYW1lIjoicmNvbGVAaWxzdGVjaC5jb20iLCJlbWFpbCI6InJjb2xlQGlsc3RlY2guY29tIiwid2liX2NsaWVudHMiOiJ7XCJDbGllbnRzXCI6W3tcIklkXCI6XCJyYWRpeC1wb3J0YWxcIixcIk5hbWVcIjpcInJhZGl4LXBvcnRhbFwiLFwiRGVzY3JpcHRpb25cIjpudWxsLFwiQWxsb3dlZENvcnNPcmlnaW5zXCI6W1wiaHR0cHM6Ly9wb3J0YWwud2liLnJhZGl4ZGF0YS5jb21cIl19LHtcIklkXCI6XCJyYWRpeC1hZG1pblwiLFwiTmFtZVwiOlwicmFkaXgtYWRtaW5cIixcIkRlc2NyaXB0aW9uXCI6bnVsbCxcIkFsbG93ZWRDb3JzT3JpZ2luc1wiOltcImh0dHBzOi8vYWRtaW4ud2liLnJhZGl4ZGF0YS5jb21cIl19LHtcIklkXCI6XCJ3aWItanMtd2liLXFhMTBcIixcIk5hbWVcIjpcIndpYi1qcy13aWItcWExMFwiLFwiRGVzY3JpcHRpb25cIjpudWxsLFwiQWxsb3dlZENvcnNPcmlnaW5zXCI6W1wiaHR0cHM6Ly93aWItcWExMC53aWIucmFkaXhkYXRhLmNvbVwiXX0se1wiSWRcIjpcIndpYi1qcy13aWItZGVtb3Byb2RcIixcIk5hbWVcIjpcIndpYi1qcy13aWItZGVtb3Byb2RcIixcIkRlc2NyaXB0aW9uXCI6bnVsbCxcIkFsbG93ZWRDb3JzT3JpZ2luc1wiOltcImh0dHBzOi8vd2liLWRlbW9wcm9kLndpYi5yYWRpeGRhdGEuY29tXCJdfSx7XCJJZFwiOlwid2liLWpzLXdpYi1kaXNuZXlcIixcIk5hbWVcIjpcIndpYi1qcy13aWItZGlzbmV5XCIsXCJEZXNjcmlwdGlvblwiOm51bGwsXCJBbGxvd2VkQ29yc09yaWdpbnNcIjpbXCJodHRwczovL3dpYi1kaXNuZXkud2liLnJhZGl4ZGF0YS5jb21cIl19LHtcIklkXCI6XCJ3aWItbW9iaWxlXCIsXCJOYW1lXCI6XCJ3aWItbW9iaWxlXCIsXCJEZXNjcmlwdGlvblwiOm51bGwsXCJBbGxvd2VkQ29yc09yaWdpbnNcIjpbXX1dfSIsIndpYl9hdXRob3JpemVkX2NsaWVudHMiOiJ3aWItbW9iaWxlLHJhZGl4LXBvcnRhbCxyYWRpeC1hZG1pbix3aWItanMtd2liLWRlbW9wcm9kLHdpYi1qcy13aWItcWE5LHdpYi1qcy13aWItZGlzbmV5IiwiYW1yIjpbInB3ZCJdfQ.R04av6iHh_RUJAVmLt_fUOsYy-X_z7oXs-GYrfx843xq9s5HsOiYaPm9VE8l0-W7jy451_F9s6GmFPmghAqKGRqcU6uV_Ps5XQqgWz9DpJFAOVrpFrXSgAB-YILOthIkqRpEPkrsaCBBc8B-wcQjfnbvtDbNau6VvXdBi5JfG0Jyrsi6DnH_jRqGj0YtL-ysfanZQ6qzLrAdxP_QD1J3oh_pyGsvgo_SVmjSDXqzR26Ia8mGMdyfRNnNXugaP-pCegQEKZJB639bXYe-8m1S6msXbNbpEP04TrQZWyM9f7Vo0p8AUnCiHZEwYPrv9y2ZLS53jY3VAo1dNe3GcLVq9w&state=CfDJ8EN1Dwev3BNEjT9NcowM-y2R0xEAw1veHhsgOL0mVe4luL3CbZIc6H1XAiQJgK-RHdYgzhBkBP75vWiReGdCF1-yL2nb9VXEBbB5VzHe0WvS5MLQvrg6XS_v85TqegpIHQk-uShmWSWY0nyNQTXt5i7Sv_KmNHONsTeXhVqnQsMYjPRraaqb2EfocNbn49n13g&x-client-SKU=ID_NETSTANDARD2_0&x-client-ver=5.5.0.0

which you can see contains a logout redirect URL that is not formatted correctly due to the query string starting with an ampersand instead of a question mark ...

post_logout_redirect_uri=https://portal.wib.radixdata.com/signout-callback-oidc&id_token_hint=eyJhbGciOiJSU ...

This is causing IdentityServer4 to blow out, I think, with an error that says ...

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

Any idea what's happening here?

Expected Behavior

I expect it to sign out and redirect as expected. This seems to happen just fine when running on my local dev machine.

Steps To Reproduce

No response

Exceptions (if any)

No response

.NET Version

6.0.400

Anything else?

This is failing when I deploy to Azure web app service. My auth server is an IdentityServer4 web application.

Metadata

Metadata

Assignees

Labels

✔️ Resolution: AnsweredResolved because the question asked by the original author has been answered.Status: Resolvedarea-authIncludes: Authn, Authz, OAuth, OIDC, Bearerquestion

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions