mirror of
https://github.com/bitwarden/server.git
synced 2025-04-19 12:08:11 -05:00

* Upgrade to Duende.Identity * Linting * Get rid of last IdentityServer4 package * Fix identity test since Duende returns additional configuration * Use Configure PostConfigure is ran after ASP.NET's PostConfigure so ConfigurationManager was already configured and our HttpHandler wasn't being respected. * Regenerate lockfiles * Move to 6.0.4 for patches * fixes with testing * Add additional grant type supported in 6.0.4 and beautify * Lockfile refresh * Reapply lockfiles * Apply change to new WebAuthn logic * When automated merging fails me --------- Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com> Co-authored-by: Kyle Spearrin <kyle.spearrin@gmail.com>
53 lines
2.0 KiB
C#
53 lines
2.0 KiB
C#
using Bit.Core.Settings;
|
|
using Duende.IdentityServer.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);
|
|
}
|
|
}
|
|
}
|