mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-06-19 15:28:16 +08:00
Adding code ##BROKEN TESTS##
This commit is contained in:
@ -5,6 +5,8 @@ using Ocelot.Responses;
|
||||
|
||||
namespace Ocelot.Authentication.Handler.Creator
|
||||
{
|
||||
using Ocelot.Configuration;
|
||||
|
||||
using AuthenticationOptions = Configuration.AuthenticationOptions;
|
||||
|
||||
/// <summary>
|
||||
@ -16,14 +18,16 @@ namespace Ocelot.Authentication.Handler.Creator
|
||||
{
|
||||
var builder = app.New();
|
||||
|
||||
var authenticationConfig = authOptions.Config as IdentityServerConfig;
|
||||
|
||||
builder.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
|
||||
{
|
||||
Authority = authOptions.ProviderRootUrl,
|
||||
ApiName = authOptions.ApiName,
|
||||
RequireHttpsMetadata = authOptions.RequireHttps,
|
||||
Authority = authenticationConfig.ProviderRootUrl,
|
||||
ApiName = authenticationConfig.ApiName,
|
||||
RequireHttpsMetadata = authenticationConfig.RequireHttps,
|
||||
AllowedScopes = authOptions.AllowedScopes,
|
||||
SupportedTokens = SupportedTokens.Both,
|
||||
ApiSecret = authOptions.ApiSecret
|
||||
ApiSecret = authenticationConfig.ApiSecret
|
||||
});
|
||||
|
||||
var authenticationNext = builder.Build();
|
||||
|
@ -4,22 +4,38 @@ namespace Ocelot.Configuration
|
||||
{
|
||||
public class AuthenticationOptions
|
||||
{
|
||||
public AuthenticationOptions(string provider, string providerRootUrl, string apiName, bool requireHttps, List<string> allowedScopes, string apiSecret)
|
||||
public AuthenticationOptions(string provider, List<string> allowedScopes, IAuthenticationConfig config)
|
||||
{
|
||||
Provider = provider;
|
||||
ProviderRootUrl = providerRootUrl;
|
||||
ApiName = apiName;
|
||||
RequireHttps = requireHttps;
|
||||
AllowedScopes = allowedScopes;
|
||||
ApiSecret = apiSecret;
|
||||
AllowedScopes = allowedScopes;
|
||||
Config = config;
|
||||
}
|
||||
|
||||
public string Provider { get; private set; }
|
||||
|
||||
public List<string> AllowedScopes { get; private set; }
|
||||
|
||||
public IAuthenticationConfig Config { get; }
|
||||
}
|
||||
|
||||
|
||||
public interface IAuthenticationConfig
|
||||
{
|
||||
}
|
||||
|
||||
public class IdentityServerConfig : IAuthenticationConfig
|
||||
{
|
||||
public IdentityServerConfig(string providerRootUrl, string apiName, bool requireHttps, string apiSecret)
|
||||
{
|
||||
ProviderRootUrl = providerRootUrl;
|
||||
ApiName = apiName;
|
||||
RequireHttps = requireHttps;
|
||||
ApiSecret = apiSecret;
|
||||
}
|
||||
|
||||
public string ProviderRootUrl { get; private set; }
|
||||
public string ApiName { get; private set; }
|
||||
public string ApiSecret { get; private set; }
|
||||
public bool RequireHttps { get; private set; }
|
||||
public List<string> AllowedScopes { get; private set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -6,51 +6,71 @@ namespace Ocelot.Configuration.Builder
|
||||
{
|
||||
|
||||
private string _provider;
|
||||
private string _providerRootUrl;
|
||||
private string _apiName;
|
||||
private string _apiSecret;
|
||||
private bool _requireHttps;
|
||||
|
||||
private List<string> _allowedScopes;
|
||||
|
||||
private IAuthenticationConfig _config;
|
||||
|
||||
public AuthenticationOptionsBuilder WithProvider(string provider)
|
||||
{
|
||||
_provider = provider;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AuthenticationOptionsBuilder WithProviderRootUrl(string providerRootUrl)
|
||||
{
|
||||
_providerRootUrl = providerRootUrl;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AuthenticationOptionsBuilder WithApiName(string apiName)
|
||||
{
|
||||
_apiName = apiName;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AuthenticationOptionsBuilder WithApiSecret(string apiSecret)
|
||||
{
|
||||
_apiSecret = apiSecret;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AuthenticationOptionsBuilder WithRequireHttps(bool requireHttps)
|
||||
{
|
||||
_requireHttps = requireHttps;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AuthenticationOptionsBuilder WithAllowedScopes(List<string> allowedScopes)
|
||||
{
|
||||
_allowedScopes = allowedScopes;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AuthenticationOptionsBuilder WithConfiguration(IAuthenticationConfig config)
|
||||
{
|
||||
_config = config;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AuthenticationOptions Build()
|
||||
{
|
||||
return new AuthenticationOptions(_provider, _providerRootUrl, _apiName, _requireHttps, _allowedScopes, _apiSecret);
|
||||
return new AuthenticationOptions(_provider, _allowedScopes, _config);
|
||||
}
|
||||
}
|
||||
|
||||
public class IdentityServerConfigBuilder
|
||||
{
|
||||
private string _providerRootUrl;
|
||||
private string _apiName;
|
||||
private string _apiSecret;
|
||||
private bool _requireHttps;
|
||||
|
||||
public IdentityServerConfigBuilder WithProviderRootUrl(string providerRootUrl)
|
||||
{
|
||||
_providerRootUrl = providerRootUrl;
|
||||
return this;
|
||||
}
|
||||
|
||||
public IdentityServerConfigBuilder WithApiName(string apiName)
|
||||
{
|
||||
_apiName = apiName;
|
||||
return this;
|
||||
}
|
||||
|
||||
public IdentityServerConfigBuilder WithApiSecret(string apiSecret)
|
||||
{
|
||||
_apiSecret = apiSecret;
|
||||
return this;
|
||||
}
|
||||
|
||||
public IdentityServerConfigBuilder WithRequireHttps(bool requireHttps)
|
||||
{
|
||||
_requireHttps = requireHttps;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public IdentityServerConfig Build()
|
||||
{
|
||||
return new IdentityServerConfig(_providerRootUrl, _apiName, _requireHttps, _apiSecret);
|
||||
}
|
||||
}
|
||||
}
|
@ -7,14 +7,25 @@ namespace Ocelot.Configuration.Creator
|
||||
{
|
||||
public AuthenticationOptions Create(FileReRoute fileReRoute)
|
||||
{
|
||||
var authenticationConfig = new AuthenticationConfigCreator().Create(fileReRoute.AuthenticationOptions);
|
||||
|
||||
return new AuthenticationOptionsBuilder()
|
||||
.WithProvider(fileReRoute.AuthenticationOptions?.Provider)
|
||||
.WithProviderRootUrl(fileReRoute.AuthenticationOptions?.ProviderRootUrl)
|
||||
.WithApiName(fileReRoute.AuthenticationOptions?.ApiName)
|
||||
.WithRequireHttps(fileReRoute.AuthenticationOptions.RequireHttps)
|
||||
.WithAllowedScopes(fileReRoute.AuthenticationOptions?.AllowedScopes)
|
||||
.WithApiSecret(fileReRoute.AuthenticationOptions?.ApiSecret)
|
||||
.Build();
|
||||
.WithProvider(fileReRoute.AuthenticationOptions?.Provider)
|
||||
.WithAllowedScopes(fileReRoute.AuthenticationOptions?.AllowedScopes)
|
||||
.WithConfiguration(authenticationConfig)
|
||||
.Build();
|
||||
}
|
||||
}
|
||||
|
||||
public class AuthenticationConfigCreator
|
||||
{
|
||||
public IAuthenticationConfig Create(FileAuthenticationOptions authenticationOptions)
|
||||
{
|
||||
return new IdentityServerConfigBuilder()
|
||||
.WithApiName(authenticationOptions.IdentityServerConfig?.ApiName)
|
||||
.WithApiSecret(authenticationOptions.IdentityServerConfig?.ApiSecret)
|
||||
.WithProviderRootUrl(authenticationOptions.IdentityServerConfig?.ProviderRootUrl)
|
||||
.WithRequireHttps(authenticationOptions.IdentityServerConfig.RequireHttps).Build();
|
||||
}
|
||||
}
|
||||
}
|
@ -6,14 +6,19 @@ namespace Ocelot.Configuration.File
|
||||
{
|
||||
public FileAuthenticationOptions()
|
||||
{
|
||||
AllowedScopes = new List<string>();
|
||||
AllowedScopes = new List<string>();
|
||||
}
|
||||
|
||||
public string Provider { get; set; }
|
||||
public List<string> AllowedScopes { get; set; }
|
||||
public FileIdentityServerConfig IdentityServerConfig { get; set; }
|
||||
}
|
||||
|
||||
public class FileIdentityServerConfig
|
||||
{
|
||||
public string ProviderRootUrl { get; set; }
|
||||
public string ApiName { get; set; }
|
||||
public bool RequireHttps { get; set; }
|
||||
public List<string> AllowedScopes { get; set; }
|
||||
public string ApiSecret { get; set; }
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user