У нас есть приложение MVC.Net (c #).Мы интегрировали его с Active Directory Azure с помощью OpenIdConnect.
Аутентификация через активный каталог работает нормально во всех средах.Мы протестировали и развернули это приложение в
- Система разработчика
- Промежуточный сервер
- Производственный сервер
- Производственный сервер (Вторичный резервный сервер, только когда основнойне работает)
Рабочий процесс проверки подлинности работает правильно, как рекомендуется и ожидается во всех средах.Рабочий процесс выглядит следующим образом:
- Пользователь попадет на страницу нашего приложения.
- Пользователь выберет «Вход в Azure AD» для аутентификации через Azure AD.
- Пользователь будет перенаправлен в рабочий процесс аутентификации Azure AD.Пользователь войдет в Azure и запросит экран согласия.
- После получения согласия пользователь будет перенаправлен обратно в нашу систему, где будет создан файл cookie для проверки подлинности.
Ниже приводится проверка подлинности.конфигурация в классе запуска.
app.SetDefaultSignInAsAuthenticationType(DefaultAuthenticationTypes.ApplicationCookie);
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Passive,
AuthenticationType = OpenIdConnectAuthenticationDefaults.AuthenticationType,
Authority = AADAuthority,
TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false
},
Notifications = new OpenIdConnectAuthenticationNotifications()
{
RedirectToIdentityProvider = AppOpenIdConnectAuthenticationNotifications.RedirectToIdentityProvider,
MessageReceived = AppOpenIdConnectAuthenticationNotifications.MessageReceived,
SecurityTokenReceived = AppOpenIdConnectAuthenticationNotifications.SecurityTokenReceived,
SecurityTokenValidated = AppOpenIdConnectAuthenticationNotifications.SecurityTokenValidated,
AuthorizationCodeReceived = AppOpenIdConnectAuthenticationNotifications.AuthorizationCodeReceived,
AuthenticationFailed = AppOpenIdConnectAuthenticationNotifications.AuthenticationFailed
}
AADAuthority - это переменная со значением https://login.microsoftonline.com/common/.
Другие обязательные параметры устанавливаются перед началом перенаправления аутентификации, например ClientId, RedirectUri и Prompt.
Проблема заключается в том, что при развертывании на сервере продукта
- Он работает правильно в течение дня или двух, и пользователь может успешно войти в систему.
- Однако после определенного периода он перестает работать (обычно на деньили два) и больше не создает и не авторизует cookie при перенаправлении обратно в нашу систему.
- Если приложение перезагружено, оно начинает работать и снова останавливается через определенное время.
Я сделалнекоторые поиски, чтобы увидеть, сталкивался ли кто-то с подобной проблемой раньше.
Связанная статья, которую я нашел до сих пор: https://github.com/IdentityServer/IdentityServer3/issues/2091.
Любая помощь, предложение или комментарий будут полезны.