OWIN производит различное поведение между IIS express и IIS
Я создаю приложение для аутентификации с помощью OWIN. Я пытаюсь получить как токен медведя, так и утверждения userinfo. Приведенный ниже код дает мне 85% того, что я хочу. При первоначальном написании кода я использовал IIS Express. Я отлажено и закодированы по отношению к этой среде. По какой-либо причине после первоначального вызова вызова в блоке else запрос.isauthenticated становится ложным после возврата с экрана входа в систему (используя KeyCloak в качестве idp). Затем код сбрасывает пользователя в блок else if, где я нахожу запрос.форма имеет мой знак на предъявителя. Затем я должен снова выполнить authentication.challenge (экран входа в систему KeyCloak не открывается), и я возвращаюсь в верхнюю часть page_load, и на этот раз request.isauthenticated истинен, и я могу получить userinfo, но запрос.форма пуста. Это находка для меня, потому что я могу хранить всю информацию где - то для последующего использования.
Как только я добрался до этой точки я нацелился сервер IIS Запустил код и получил другое поведение. Код изначально попадает в блок else (так же, как и раньше) Я вошел в систему, но по возвращении из idp на этот раз запрос.isAuthenticated истинен. У меня есть userinfo, но нет токена на предъявителя. Есть идеи, почему??
Что я уже пробовал:
protected void Page_Load(object sender, EventArgs e) { if (Request.IsAuthenticated) { String str = String.Empty; var qry = ((System.Security.Claims.ClaimsPrincipal)Request.RequestContext.HttpContext.User).Claims; if (null != qry) { foreach (System.Security.Claims.Claim item in qry) { if (item.Type == "preferred_username") { str = item.Value; } } } }else if (!Request.IsAuthenticated && Request.Form.Count > 0) { HttpContext.Current.GetOwinContext().Authentication.Challenge( new AuthenticationProperties { }, OpenIdConnectAuthenticationDefaults.AuthenticationType); } else { HttpContext.Current.GetOwinContext().Authentication.Challenge( new AuthenticationProperties { RedirectUri = "/XXXapp locationXXX/" }, OpenIdConnectAuthenticationDefaults.AuthenticationType); } }