Я недавно перешел с windows аутентификации на Azure AD, используя примерно код "из коробки";
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseKentorOwinCookieSaver();
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = Authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
Notifications = new OpenIdConnectAuthenticationNotifications()
{
// If there is a code in the OpenID Connect response, redeem it for an access token and refresh token, and store those away.
AuthorizationCodeReceived = (context) =>
{
var code = context.Code;
ClientCredential credential = new ClientCredential(clientId, appKey);
string signedInUserID = context.AuthenticationTicket.Identity.FindFirst(ClaimTypes.NameIdentifier).Value;
//AuthenticationContext authContext = new AuthenticationContext(Authority, new ADALTokenCache(signedInUserID));
AuthenticationContext authContext = new AuthenticationContext(Authority);
return authContext.AcquireTokenByAuthorizationCodeAsync(
code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, graphResourceId);
}
}
});
}
Наши пользователи начали периодически получать ошибки 404 при попытке отправить определенные формы. Я думаю, что мне удалось воссоздать проблему, удалив файлы cookie, поэтому я подозреваю, что она связана с естественным истечением времени сеанса.
Если я посмотрю поток с запросом HTTP GET, он будет выглядеть так:
Все работает лечить ...
Однако для HTTP POST;
Сбой, поскольку конечная точка принимает только запросы HTTP POST.
Есть идеи, если / как я могу это исправить? Я бы подумал, что встроенное отслеживание состояния или что бы оно ни делало, сохранит исходный запрос и продолжит с того места, где оно было прервано, независимо от ...