Я успешно установил аутентификацию AspNet Core 2, но теперь хотел бы, чтобы она работала за балансировщиком нагрузки.
Поскольку адрес балансировщика нагрузки отличается от адреса моего приложения, я меняю Uri перенаправления в своем файле startup.cs ConfigureServices, как это ...
options.Events.OnRedirectToIdentityProvider = async n =>
{
n.ProtocolMessage.RedirectUri = "https://frontfacingaddress.com";
await Task.FromResult(0);
};
Это работает нормально, и я успешно аутентифицируюсь, и обратный вызов с сервера идентификации вызывает https://frontfacingaddress.com/signin-oidc. Это правильно обработано, и обработка OnTokenResponseReceived показывает, что я успешно получил токен.
Проблема в том, что он затем делает еще один вызов на сервере идентификации, но на этот раз на фактический (не с балансировкой нагрузки) адрес приложения. Когда это возвращается, он выдает ошибку: Файл cookie AspNetCore.Correlation.OpenIdConnect не найден.
Итак, след Fiddler выглядит так:
302 HTTPS frontfacingaddress.com /account/signin
200 HTTPS identity.serveraddress.com /connect/authorize/callback etc...
302 HTTPS frontfacingaddress.com /signin-oidc
-- this is where I successfully receive the code, but then:
302 HTTPS actualwebaddress.com /account/signin
200 HTTPS identity.serveraddress.com /connect/authorize/callback etc...
400 HTTPS frontfacingaddress.com /signin-oidc
-- this is the 400 cookie not found error
Почему после успешной аутентификации он снова запускается с фактического адреса и дает сбой?