mirror of
https://github.com/bitwarden/server
synced 2025-12-18 09:13:19 +00:00
* Revert "Add git blame entry (#2226)" This reverts commit239286737d. * Revert "Turn on file scoped namespaces (#2225)" This reverts commit34fb4cca2a.
54 lines
2.1 KiB
C#
54 lines
2.1 KiB
C#
using Bit.Core.Settings;
|
|
using IdentityServer4.Configuration;
|
|
using Microsoft.AspNetCore.Authentication.Cookies;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.Extensions.Caching.StackExchangeRedis;
|
|
using Microsoft.Extensions.Options;
|
|
|
|
namespace Bit.Core.IdentityServer
|
|
{
|
|
public class ConfigureOpenIdConnectDistributedOptions : IPostConfigureOptions<CookieAuthenticationOptions>
|
|
{
|
|
private readonly IdentityServerOptions _idsrv;
|
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
private readonly GlobalSettings _globalSettings;
|
|
|
|
public ConfigureOpenIdConnectDistributedOptions(IHttpContextAccessor httpContextAccessor, GlobalSettings globalSettings,
|
|
IdentityServerOptions idsrv)
|
|
{
|
|
_httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor));
|
|
_globalSettings = globalSettings;
|
|
_idsrv = idsrv;
|
|
}
|
|
|
|
public void PostConfigure(string name, CookieAuthenticationOptions options)
|
|
{
|
|
options.CookieManager = new DistributedCacheCookieManager();
|
|
|
|
if (name != AuthenticationSchemes.BitwardenExternalCookieAuthenticationScheme)
|
|
{
|
|
// Ignore
|
|
return;
|
|
}
|
|
|
|
options.Cookie.Name = AuthenticationSchemes.BitwardenExternalCookieAuthenticationScheme;
|
|
options.Cookie.IsEssential = true;
|
|
options.Cookie.SameSite = _idsrv.Authentication.CookieSameSiteMode;
|
|
options.TicketDataFormat = new DistributedCacheTicketDataFormatter(_httpContextAccessor, name);
|
|
|
|
if (string.IsNullOrWhiteSpace(_globalSettings.IdentityServer?.RedisConnectionString))
|
|
{
|
|
options.SessionStore = new MemoryCacheTicketStore();
|
|
}
|
|
else
|
|
{
|
|
var redisOptions = new RedisCacheOptions
|
|
{
|
|
Configuration = _globalSettings.IdentityServer.RedisConnectionString,
|
|
};
|
|
options.SessionStore = new RedisCacheTicketStore(redisOptions);
|
|
}
|
|
}
|
|
}
|
|
}
|