mirror of
https://github.com/bitwarden/server
synced 2025-12-06 00:03:34 +00:00
* Revert "Add git blame entry (#2226)" This reverts commit239286737d. * Revert "Turn on file scoped namespaces (#2225)" This reverts commit34fb4cca2a.
79 lines
3.2 KiB
C#
79 lines
3.2 KiB
C#
using Bit.Core.Business.Sso;
|
|
using Bit.Core.IdentityServer;
|
|
using Bit.Core.Settings;
|
|
using Bit.Core.Utilities;
|
|
using Bit.SharedWeb.Utilities;
|
|
using Bit.Sso.Models;
|
|
using IdentityServer4.Models;
|
|
using IdentityServer4.ResponseHandling;
|
|
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
|
|
using Sustainsys.Saml2.AspNetCore2;
|
|
|
|
namespace Bit.Sso.Utilities
|
|
{
|
|
public static class ServiceCollectionExtensions
|
|
{
|
|
public static IServiceCollection AddSsoServices(this IServiceCollection services,
|
|
GlobalSettings globalSettings)
|
|
{
|
|
// SAML SP Configuration
|
|
var samlEnvironment = new SamlEnvironment
|
|
{
|
|
SpSigningCertificate = CoreHelpers.GetIdentityServerCertificate(globalSettings),
|
|
};
|
|
services.AddSingleton(s => samlEnvironment);
|
|
|
|
services.AddSingleton<Microsoft.AspNetCore.Authentication.IAuthenticationSchemeProvider,
|
|
DynamicAuthenticationSchemeProvider>();
|
|
// Oidc
|
|
services.AddSingleton<Microsoft.Extensions.Options.IPostConfigureOptions<OpenIdConnectOptions>,
|
|
OpenIdConnectPostConfigureOptions>();
|
|
services.AddSingleton<Microsoft.Extensions.Options.IOptionsMonitorCache<OpenIdConnectOptions>,
|
|
ExtendedOptionsMonitorCache<OpenIdConnectOptions>>();
|
|
// Saml2
|
|
services.AddSingleton<Microsoft.Extensions.Options.IPostConfigureOptions<Saml2Options>,
|
|
PostConfigureSaml2Options>();
|
|
services.AddSingleton<Microsoft.Extensions.Options.IOptionsMonitorCache<Saml2Options>,
|
|
ExtendedOptionsMonitorCache<Saml2Options>>();
|
|
|
|
return services;
|
|
}
|
|
|
|
public static IIdentityServerBuilder AddSsoIdentityServerServices(this IServiceCollection services,
|
|
IWebHostEnvironment env, GlobalSettings globalSettings)
|
|
{
|
|
services.AddTransient<IDiscoveryResponseGenerator, DiscoveryResponseGenerator>();
|
|
|
|
var issuerUri = new Uri(globalSettings.BaseServiceUri.InternalSso);
|
|
var identityServerBuilder = services
|
|
.AddIdentityServer(options =>
|
|
{
|
|
options.IssuerUri = $"{issuerUri.Scheme}://{issuerUri.Host}";
|
|
if (env.IsDevelopment())
|
|
{
|
|
options.Authentication.CookieSameSiteMode = Microsoft.AspNetCore.Http.SameSiteMode.Unspecified;
|
|
}
|
|
else
|
|
{
|
|
options.UserInteraction.ErrorUrl = "/Error";
|
|
options.UserInteraction.ErrorIdParameter = "errorId";
|
|
}
|
|
options.InputLengthRestrictions.UserName = 256;
|
|
})
|
|
.AddInMemoryCaching()
|
|
.AddInMemoryClients(new List<Client>
|
|
{
|
|
new OidcIdentityClient(globalSettings)
|
|
})
|
|
.AddInMemoryIdentityResources(new List<IdentityResource>
|
|
{
|
|
new IdentityResources.OpenId(),
|
|
new IdentityResources.Profile()
|
|
})
|
|
.AddIdentityServerCertificate(env, globalSettings);
|
|
|
|
return identityServerBuilder;
|
|
}
|
|
}
|
|
}
|