Как сохранить токен IdentityServer в локальной базе данных - PullRequest
0 голосов
/ 09 апреля 2019

Я использую IdentityServer4 для службы аутентификации конфигурации для моего веб-приложения.Я уже настраивал identityServer с помощью memoryStorage.Проблема, которую я задавал себе, заключается в том, получил ли я токен от identityServer, и позже IdentiyServer перезапускается, когда срок действия токена истек. IdentitySever способно распознать токен и обновить его?мне несколько идей о том, как это реализовать?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Интерфейс IIdentityServerBuilder имеет расширение, называемое AddOperationalStore .

Настройка и миграция базы данных описаны здесь: http://docs.identityserver.io/en/latest/quickstarts/7_entity_framework.html

Вы можете использовать его как:

var migrationsAssembly = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;

var isrvBuilder = services.AddIdentityServer();

isrvBuilder.AddOperationalStore(options =>
{
    options.ConfigureDbContext = builder =>
                builder.UseSqlServer(configuration.GetConnectionString("DefaultConnection"),
                        sql => sql.MigrationsAssembly(migrationsAssembly));
                options.EnableTokenCleanup = true;
                options.TokenCleanupInterval = 30;
});
0 голосов
/ 10 апреля 2019

Вам нужно будет реализовать свой собственный IRefreshTokenStore и добавить его в свой контейнер DI, например:

// Add to DI
services.AddSingleton<IRefreshTokenStore , CustomRefreshTokenStore >();

// Create a new class that implements the IRefreshTokenStore
public class CustomRefreshTokenStore : IRefreshTokenStore
    {
        public Task<RefreshToken> GetRefreshTokenAsync(string refreshTokenHandle)
        {
            throw new NotImplementedException();
        }

        public Task RemoveRefreshTokenAsync(string refreshTokenHandle)
        {
            throw new NotImplementedException();
        }

        public Task RemoveRefreshTokensAsync(string subjectId, string clientId)
        {
            throw new NotImplementedException();
        }

        public Task<string> StoreRefreshTokenAsync(RefreshToken refreshToken)
        {
            throw new NotImplementedException();
        }

        public Task UpdateRefreshTokenAsync(string handle, RefreshToken refreshToken)
        {
            throw new NotImplementedException();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...