Я пытался выйти из сеанса, используя GET запрос из документов IdentityServer4.
HttpResponseMessage выглядит так:
HttpResponseMessage res = await client.GetAsync($"connect/endsession?id_token_hint={idTokenHint}&post_logout_redirect_uri={postLogoutRedirectUri}");
Сначала у меня проблема с длиной Ури. Когда я отправляю запрос, метод catch исключение
Invalid URI: The Uri scheme is too long.
Чтобы исправить эту проблему, я попытался отправить параметры в строку следующим образом:
var parameters = $"?id_token_hint={idTokenHint}&post_logout_redirect_uri={postLogoutRedirectUri}";
HttpResponseMessage res = await client.GetAsync("connect/endsession" + parameters );
Также добавьте MaxRequestLineSize в Program.cs, например:
UseKestrel(options =>
{
options.Limits.MaxRequestLineSize = 20480;
})
Также пробовал так: https://stackoverflow.com/a/32457474/9541386 Но у меня ничего не работает.
Я пытался отправить этот запрос почтальоном. Запрос отправлен
http://localhost:5000/connect/endsession?id_token_hint={idTokenHint}&post_logout_redirect_uri={postLogoutRedirectUri}
но в методе FindClientByIdAsync из интерфейса IClientStore параметр clientId выглядит следующим образом:
Но в обычном случае есть Id . Я не вижу, что происходит до этого, потому что это первая точка входа.
Как я могу исправить проблему с длиной Uri и неправильным параметром?