Mark Oliver's World

Upgrading From IdentityServer Version 2 To IdentityServer Version 4

27/03/2024

I have recently needed to upgrade from IdentityServer v2 to IdentityServer v4.

This was relatively painless (upgrade via nuget), but I had these 3 issues:

1 - PublicOrigin is no longer exposed, need to add it manually:

    //Add in PublicOrigin as it has been removed in v4 of IdentityServer: https://github.com/IdentityServer/IdentityServer4/issues/4535
    app.Use(async (ctx, next) =>
    {
            ctx.SetIdentityServerOrigin("YourRequiredPublicOrigin");                
        await next();
    });

2 - Add in ApiScopes :

.AddInMemoryApiScopes(ApiScopes.GetApiScopes())

Everything worked, except my Postman tests. Weird!

All my C# code was fine, which confused me.

After a lot of searching, I came across this page (English version) by Gabriel Bareclos.

It said:

I changed the content-type of the request from: form-data to: x-www-form-urlencoded .

So in my postman, I changed:

                    "mode": "formdata",
                    "formdata": [

to this:

                    "mode": "urlencoded",
                    "urlencoded": [

That was it. That fixed my postman tests!

Note - I should have looked at the docs again, although it is something that might pass you by:

POST /connect/token
CONTENT-TYPE application/x-www-form-urlencoded

    client_id=client1&
    client_secret=secret&
    grant_type=authorization_code&
    code=hdh922&
    redirect_uri=https://myapp.com/callback

Thank you for your time.

If you want to reach out, catch me on Twitter!