Я клонировал репо из redux-oidc-example, и он по большей части работает но через несколько часов выдает следующую ошибку:
Полезные данные действия: ErrorResponse: login_required
at new e (oidc-client.min.js: 1)
at t [as _processSigninParams] (oidc-client.min.js: 1)
at t [как validateSigninResponse] (oidc-client.min.js: 1)
в oidc-client.min.js: 1
UserManager.js выглядит так:
const userManagerConfig = {
client_id: 'js.dev',
client_secret: 'secret',
redirect_uri: `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}/callback`,
response_type: 'id_token token',
scope: 'openid email profile role offline_access',
authority: 'http://localhost:8080',
silent_redirect_uri: `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}/silent_renew.html`,
automaticSilentRenew: true,
filterProtocolClaims: true,
loadUserInfo: true
};
и моя конфигурация сервера идентификации:
{
"Enabled": true,
"ClientId": "js.dev",
"ClientName": "Javascript Client",
"ClientSecrets": [ { "Value": "K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols=" } ],
"AllowedGrantTypes": [ "implicit", "authorization_code" ],
"AllowedScopes": [ "openid", "email", "profile", "role", "offline_access" ],
"AllowOfflineAccess": true,
"AllowAccessTokensViaBrowser":true,
"RedirectUris": [
"http://localhost:8081/callback",
"http://localhost:8081/silent_renew.html"
],
"PostLogoutRedirectUris": [
"http://localhost:8081"
],
"AccessTokenLifetime": 900,
"RequireConsent": false
}
Я заметил, что до ошибки последний действительный ответ имел один ответ cookie (idsrv.session) с пустым значением с датой истечения срока действия, установленной на предыдущий год:
Я считаю, что это основная причина проблемы, я поискал ее в соответствующем репозитории Github и попытался добавить Cookie.SameSite в none, но это не помогло:
services.AddAuthentication()
.AddSaml(Configuration,externalProviders.UseSaml)
.AddCookie(options => {
options.SlidingExpiration = true;
options.ExpireTimeSpan = TimeSpan.FromDays(30);
options.Cookie.SameSite = SameSiteMode.None;
});
Любая идея!