Member 13518243 Ответов: 0

Для OWIN для Redis для


Привет,

Я занимаюсь разработкой приложения web-сервиса .Чистый фреймворк 4.5 / веб-API 2, и я использую OWIN в целях проверки подлинности и авторизации.

Итак, для этого приложения нам нужно решение балансировки нагрузки, а затем мы настраиваем его, как вы знаете, после этого токены пользователей не работают должным образом. Потому что если пользователь берет токен с сервера а, то не может использовать его на сервере В.

Из-за этого мне нужно использовать Redis с Redis OWIN каждого приложения сохранит аутентификацию в redis

Спасибо.

Что я уже пробовал:

Я использовал https://github.com/ziyasal/Owin.Security.RedisTokenProviders этот пакет, но он не помогает. Наверное, я что-то упускаю.

Вот мой метод настройки при запуске.cs

public void Configuration(IAppBuilder appBuilder)
        {
            HttpConfiguration httpConfiguration = new HttpConfiguration();
            httpConfiguration.DependencyResolver = new NinjectResolver(NinjectWebCommon.CreateKernel());

            ConfigureOAuth(appBuilder);

            WebApiConfig.Register(httpConfiguration);
            appBuilder.UseWebApi(httpConfiguration);
        }


и мой серверный вариант в том же классе

OAuthAuthorizationServerOptions oAuthAuthorizationServerOptions = new OAuthAuthorizationServerOptions()
            {
                TokenEndpointPath = new Microsoft.Owin.PathString("/signin"),
                AccessTokenExpireTimeSpan = TimeSpan.FromHours(1),
                AllowInsecureHttp = true,
                Provider = new SimpleAuthorizationServerProvider(),
                RefreshTokenProvider = new RedisRefreshTokenProvider(new ProviderConfiguration
                {
                    ConnectionString = "12.0.0.145:6379",
                    Db = 0,
                    ExpiresUtc = DateTime.UtcNow.AddMinutes(5),
                    AbortOnConnectFail = true
                })
            };

Gerry Schmitz

Вы "развиваетесь" и (уже) нуждаетесь в "балансировщике нагрузки" .... Что вы "балансируете"?

David_Wimbley

Одним из вариантов, который я выбрал, было переопределение ключа машины через web.config, поэтому, если вы получили токен с сервера A, он будет работать на сервере B.

Пример: обратите внимание, что это не мой машинный ключ, я просто сгенерировал новый для этой цели.

<system.web>
    <compilation debug="true" targetFramework="4.6.1"/>
    <httpRuntime targetFramework="4.6"/>
    <machineKey validationKey="DF81295AD0E82DBD0893CFFE4BA71D41C964D3A4AFD27887A36A8C3018C55FB71D524A7107FF27A2BC15CF9B22C5611C4D64308B1F3D039E0269A7461CE70853" decryptionKey="927FFC06AD876B9442AF184E8DAC1B58DEE2E313593B113258551F7B76D19610" validation="SHA1" decryption="AES" /> 
  </system.web>

0 Ответов