/// <summary> /// Agrega la cabecera con los datos de la carga útil necesarios para el servicio Aspen. /// </summary> /// <param name="request">Solicitud a donde se agrega la cabecera.</param> /// <param name="jwtEncoder">Instancia del codificador del contenido de la carga útil.</param> /// <param name="apiSecret">Secreto de la aplicación que se utiliza para codificar el contenido del carga útil.</param> public override void AddSigninPayloadHeader( IRestRequest request, IJwtEncoder jwtEncoder, string apiSecret) { this.AddPayloadHeader(request); }
/// <summary> /// Agrega la cabecera con los datos de la carga útil necesarios para autenticar a un usuario en el servicio Aspen. /// </summary> /// <param name="request">Solicitud a donde se agrega la cabecera.</param> /// <param name="jwtEncoder">Instancia del codificador del contenido de la carga útil.</param> /// <param name="apiSecret">Secreto de la aplicación que se utiliza para codificar el contenido del carga útil.</param> /// <param name="userIdentity">La información que se utiliza para autenticar la solicitud en función de un usuario.</param> public void AddSigninPayloadHeader( IRestRequest request, IJwtEncoder jwtEncoder, string apiSecret, IUserIdentity userIdentity) { Throw.IfNull(request, nameof(request)); Throw.IfNull(jwtEncoder, nameof(jwtEncoder)); Throw.IfNullOrEmpty(apiSecret, nameof(apiSecret)); Throw.IfNull(userIdentity, nameof(userIdentity)); IDeviceInfo deviceInfo = userIdentity.Device ?? CacheStore.Get <DeviceInfo>(CacheKeys.CurrentDevice) ?? DeviceInfo.Current; request.AddHeader(ServiceLocator.Instance.RequestHeaderNames.DeviceInfoHeaderName, deviceInfo.ToJson()); CacheStore.Add(CacheKeys.CurrentDevice, deviceInfo); Dictionary <string, object> payload = new Dictionary <string, object>(); ServiceLocator.Instance.PayloadClaimsManager.AddNonceClaim(payload, ServiceLocator.Instance.NonceGenerator.GetNonce()); ServiceLocator.Instance.PayloadClaimsManager.AddEpochClaim(payload, ServiceLocator.Instance.EpochGenerator.GetSeconds()); ServiceLocator.Instance.PayloadClaimsManager.AddDocTypeClaim(payload, userIdentity.DocType); ServiceLocator.Instance.PayloadClaimsManager.AddDocNumberClaim(payload, userIdentity.DocNumber); ServiceLocator.Instance.PayloadClaimsManager.AddPasswordClaim(payload, userIdentity.Password); ServiceLocator.Instance.PayloadClaimsManager.AddDeviceIdClaim(payload, deviceInfo.DeviceId); string jwt = jwtEncoder.Encode(payload, apiSecret); request.AddHeader(ServiceLocator.Instance.RequestHeaderNames.PayloadHeaderName, jwt); }
public GestorDeToken() { IJwtValidator validator = new JwtValidator(serializer, provider); this.decoder = new JwtDecoder(serializer, validator, urlEncoder); this.encoder = new JwtEncoder(algorithm, serializer, urlEncoder); }
/// <summary> /// Agrega la cabecera con los datos de la carga útil necesarios para autenticar a un usuario en el servicio Aspen. /// </summary> /// <param name="request">Solicitud a donde se agrega la cabecera.</param> /// <param name="jwtEncoder">Instancia del codificador del contenido de la carga útil.</param> /// <param name="apiSecret">Secreto de la aplicación que se utiliza para codificar el contenido del carga útil.</param> /// <param name="token">El token de autenticación emitido para el usuario.</param> /// <param name="username">La identificación del usuario autenticado.</param> /// <param name="device">La información asociada con el dispositivo del usuario.</param> public void AddSignedPayloadHeader( IRestRequest request, IJwtEncoder jwtEncoder, string apiSecret, string token, string username, IDeviceInfo device = null) { Throw.IfNull(request, nameof(request)); Throw.IfNull(jwtEncoder, nameof(jwtEncoder)); Throw.IfNullOrEmpty(apiSecret, nameof(apiSecret)); Throw.IfNullOrEmpty(token, nameof(token)); Throw.IfNullOrEmpty(username, nameof(username)); IDeviceInfo deviceInfo = device ?? CacheStore.Get <DeviceInfo>(CacheKeys.CurrentDevice) ?? DeviceInfo.Current; Dictionary <string, object> payload = new Dictionary <string, object>(); ServiceLocator.Instance.PayloadClaimsManager.AddNonceClaim(payload, ServiceLocator.Instance.NonceGenerator.GetNonce()); ServiceLocator.Instance.PayloadClaimsManager.AddEpochClaim(payload, ServiceLocator.Instance.EpochGenerator.GetSeconds()); ServiceLocator.Instance.PayloadClaimsManager.AddTokenClaim(payload, token); ServiceLocator.Instance.PayloadClaimsManager.AddUsernameClaim(payload, username); ServiceLocator.Instance.PayloadClaimsManager.AddDeviceIdClaim(payload, deviceInfo.DeviceId); string jwt = jwtEncoder.Encode(payload, apiSecret); request.AddHeader(ServiceLocator.Instance.RequestHeaderNames.PayloadHeaderName, jwt); }
public TokenMaker() { algorithm = new HMACSHA256Algorithm(); serializer = new JsonNetSerializer(); urlEncoder = new JwtBase64UrlEncoder(); encoder = new JwtEncoder(algorithm, serializer, urlEncoder); }
public TokenIssuer() { _algorithm = new HMACSHA256Algorithm(); _serializer = new JsonNetSerializer(); _base64Encoder = new JwtBase64UrlEncoder(); _jwtEncoder = new JwtEncoder(_algorithm, _serializer, _base64Encoder); }
public JWTWorker() { IJwtAlgorithm algorithm = new HMACSHA256Algorithm(); // symmetric IJsonSerializer serializer = new JsonNetSerializer(); IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder(); Encoder = new JwtEncoder(algorithm, serializer, urlEncoder); }
/// <summary> /// Agrega la cabecera con el payload requerido por el servicio Aspen. /// </summary> /// <param name="request">Solicitud a donde se agrega la cabecera.</param> /// <param name="encoder">The encoder.</param> /// <param name="payload">Diccionario que contiene los datos del payload.</param> /// <param name="identity">Instancia de <see cref="IIdentityProvider" /> que proporciona la información de autenticación.</param> public virtual void AddPayloadHeader(IRestRequest request, IJwtEncoder encoder, IDictionary <string, object> payload, IIdentityProvider identity) { Throw.IfNull(request, nameof(request)); Throw.IfNull(encoder, nameof(encoder)); Throw.IfNull(payload, nameof(payload)); Throw.IfNull(identity, nameof(identity)); this.AddPayloadHeader(request, encoder.Encode(payload, identity.ApiSecret)); }
public Token(Dictionary <string, object> Payload) { this.Payload = Payload; EncriptionAlgorithm = new HMACSHA256Algorithm(); JSONSerializer = new JsonNetSerializer(); URLEncoder = new JwtBase64UrlEncoder(); JWTEncoder = new JwtEncoder(EncriptionAlgorithm, JSONSerializer, URLEncoder); }
public TokenIssuer() { // JWT specific initialization. // https://github.com/jwt-dotnet/jwt _algorithm = new HMACSHA256Algorithm(); _serializer = new JsonNetSerializer(); _base64Encoder = new JwtBase64UrlEncoder(); _jwtEncoder = new JwtEncoder(_algorithm, _serializer, _base64Encoder); }
public SecurityService(IApplicationSettings appSettings, ILoginReader loginReader, IPasswordService passwordService, IJwtEncoder encoder, IJwtDecoder decoder, ITokenGenerator tokenGenerator) { _key = appSettings.GetValue("API:Key"); _decoder = decoder; _encoder = encoder; _exp = int.Parse(appSettings.GetValue("Token:ExpHrs")); _loginReader = loginReader; _tokenGenerator = tokenGenerator; _passwordService = passwordService; }
public AuthService(AuthOptions options) { _options = options ?? throw new ArgumentNullException(nameof(options)); _logger = Log.Logger.ForContext(GetType()); var jwtSerializer = new JsonNetSerializer(); var jwtValidator = new JwtValidator(jwtSerializer, new UtcDateTimeProvider()); var jwtUrlEncoder = new JwtBase64UrlEncoder(); _jwtEncoder = new JwtEncoder(new HMACSHA256Algorithm(), jwtSerializer, jwtUrlEncoder); _jwtDecoder = new JwtDecoder(jwtSerializer, jwtValidator, jwtUrlEncoder); }
void init() { urlEncoder = new JwtBase64UrlEncoder(); serializer = new JsonNetSerializer(); algorithm = new HMACSHA256Algorithm(); encoder = new JwtEncoder(algorithm, serializer, urlEncoder); provider = new UtcDateTimeProvider(); validator = new JwtValidator(serializer, provider); decoder = new JwtDecoder(serializer, validator, urlEncoder); }
public JWTHelper() { //非fluent写法 this._jsonSerializer = new JsonNetSerializer(); this._dateTimeProvider = new UtcDateTimeProvider(); this._jwtValidator = new JwtValidator(_jsonSerializer, _dateTimeProvider); this._base64UrlEncoder = new JwtBase64UrlEncoder(); this._jwtAlgorithm = new HMACSHA256Algorithm(); this._jwtDecoder = new JwtDecoder(_jsonSerializer, _jwtValidator, _base64UrlEncoder); this._jwtEncoder = new JwtEncoder(_jwtAlgorithm, _jsonSerializer, _base64UrlEncoder); }
public JwtObjectEncoder(JwtSecretOptions jwtSecretOptions) { secret = jwtSecretOptions.Secret; algorithm = new HMACSHA256Algorithm(); serializer = new JsonNetSerializer(); urlEncoder = new JwtBase64UrlEncoder(); provider = new UtcDateTimeProvider(); validator = new JwtValidator(serializer, provider); encoder = new JwtEncoder(algorithm, serializer, urlEncoder); decoder = new JwtDecoder(serializer, validator, urlEncoder); }
public JwTToken() { IJwtAlgorithm algorithm = new HMACSHA512Algorithm(); IJsonSerializer serializer = new JsonNetSerializer(); IDateTimeProvider datetimeProvider = new UtcDateTimeProvider(); IJwtValidator validator = new JwtValidator(serializer, datetimeProvider); IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder(); encoder = new JwtEncoder(algorithm, serializer, urlEncoder); decoder = new JwtDecoder(serializer, urlEncoder); SecretKey = ""; }
public IJwtDecoderExtensionsTest() { var services = new ServiceCollection(); services.AddOptions(); services.AddJwt(); var provider = services.BuildServiceProvider(); _jwtEncoder = provider.GetRequiredService <IJwtEncoder>(); _jwtDecoder = provider.GetRequiredService <IJwtDecoder>(); }
public DisruptiveTechAPIClient(string baseUrl, string issuer, string apiKey, string apiKeySecret, string projectId, IJwtEncoder jwtEncoder) { client = new RestClient(baseUrl); client.UseSerializer <JsonNetSerializer>(); this.issuer = issuer; this.apiKey = apiKey; this.apiKeySecret = apiKeySecret; this.projectId = projectId; this.jwtEncoder = jwtEncoder; }
public void Dispose() { _encoder = null; _decoder = null; _algorithm = null; _serializer = null; _urlEncoder = null; _provider = null; _validator = null; }
static JWTTools() { algorithm = new HMACSHA256Algorithm(); serializer = new JsonNetSerializer(); urlEncoder = new JwtBase64UrlEncoder(); encoder = new JwtEncoder(algorithm, serializer, urlEncoder); provider = new UtcDateTimeProvider(); validator = new JwtValidator(serializer, provider); decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm); }
public JWT_Provider() { _algorithm = new HMACSHA256Algorithm(); _serializer = new JsonNetSerializer(); _urlEncoder = new JwtBase64UrlEncoder(); _encoder = new JwtEncoder(_algorithm, _serializer, _urlEncoder); _provider = new UtcDateTimeProvider(); _validator = new JwtValidator(_serializer, _provider); _decoder = new JwtDecoder(_serializer, _validator, _urlEncoder, _algorithm); }
public JWTTokenProvider(IOptions <JWTSettings> optionsAccessor) { _jwtSettings = optionsAccessor.Value; IJwtAlgorithm algorithm = new HMACSHA256Algorithm(); IJsonSerializer serializer = new JsonNetSerializer(); IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder(); IJwtValidator validator = new JwtValidator(serializer, new UtcDateTimeProvider()); _encoder = new JwtEncoder(algorithm, serializer, urlEncoder); _decoder = new JwtDecoder(serializer, validator, urlEncoder); }
public JwtWrapper() { //Dependencies IJwtAlgorithm jwtAlgorithm = new HMACSHA256Algorithm(); IJsonSerializer jsonSerializer = new JsonNetSerializer(); IBase64UrlEncoder base64UrlEncoder = new JwtBase64UrlEncoder(); IDateTimeProvider dateTimeProvider = new UtcDateTimeProvider(); IJwtValidator jwtValidator = new JwtValidator(jsonSerializer, dateTimeProvider); //Initialize _jwtEncoder = new JwtEncoder(jwtAlgorithm, jsonSerializer, base64UrlEncoder); _jwtDecoder = new JwtDecoder(jsonSerializer, jwtValidator, base64UrlEncoder); }
/// <summary> /// Agrega la cabecera con los datos de la carga útil necesarios para el servicio Aspen. /// </summary> /// <param name="request">Solicitud a donde se agrega la cabecera.</param> /// <param name="jwtEncoder">Instancia del codificador del contenido de la carga útil.</param> /// <param name="apiSecret">Secreto de la aplicación que se utiliza para codificar el contenido del carga útil.</param> public virtual void AddSigninPayloadHeader( IRestRequest request, IJwtEncoder jwtEncoder, string apiSecret) { Dictionary <string, object> payload = new Dictionary <string, object>(); ServiceLocator.Instance.PayloadClaimsManager.AddNonceClaim(payload, ServiceLocator.Instance.NonceGenerator.GetNonce()); ServiceLocator.Instance.PayloadClaimsManager.AddEpochClaim(payload, ServiceLocator.Instance.EpochGenerator.GetSeconds()); string jwt = jwtEncoder.Encode(payload, apiSecret); request.AddHeader(ServiceLocator.Instance.RequestHeaderNames.PayloadHeaderName, jwt); }
public JwtTokenProvider(IOptions <JwtTokenProviderOptions> config, ILogger <JwtTokenProvider> logger) { _secret = config.Value.Secret ?? throw new ArgumentException("secret not defined"); _logger = logger; IJwtAlgorithm algorithm = new HMACSHA256Algorithm(); IJsonSerializer serializer = new JsonNetSerializer(); IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder(); IJwtValidator validator = new JwtValidator(serializer, new UtcDateTimeProvider()); _encoder = new JwtEncoder(algorithm, serializer, urlEncoder); _decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm); }
/// <summary> /// Agrega la cabecera con los datos de la carga útil necesarios para firmar una solicitud de una aplicación a partir del token de autenticación. /// </summary> /// <param name="request">Solicitud a donde se agrega la cabecera.</param> /// <param name="jwtEncoder">Instancia del codificador del contenido de la carga útil.</param> /// <param name="apiSecret">Secreto de la aplicación que se utiliza para codificar el contenido del carga útil.</param> /// <param name="token">El token de autenticación emitido para la aplicación.</param> public override void AddSignedPayloadHeader( IRestRequest request, IJwtEncoder jwtEncoder, string apiSecret, string token) { if (!string.IsNullOrEmpty(this.customAppSecret)) { base.AddSignedPayloadHeader(request, jwtEncoder, this.customAppSecret, token); return; } this.AddPayloadHeader(request); }
public JwtService(IConfiguration configuration) { _jwtSecretToken = configuration["JwtSecretToken"]; var algorithm = new HMACSHA256Algorithm(); var serializer = new JsonNetSerializer(); var base64Encoder = new JwtBase64UrlEncoder(); _jwtEncoder = new JwtEncoder(algorithm, serializer, base64Encoder); var dateTimeProvider = new UtcDateTimeProvider(); var jwtValidator = new JwtValidator(serializer, dateTimeProvider); _jwtDecoder = new JwtDecoder(serializer, jwtValidator, base64Encoder, algorithm); }
/// <summary> /// Inicializa una nueva instancia de la clase <see cref="AspenClient"/> /// </summary> /// <param name="settings">Configuración de inicialización.</param> private AspenClient(ISettings settings) { this.nonceGenerator = settings?.NonceGenerator ?? new GuidNonceGenerator(); this.epochGenerator = settings?.EpochGenerator ?? new UnixEpochGenerator(); this.customHeaderManager = settings?.CustomHeaderManager ?? new CustomHeaderManager(); IJsonSerializer serializer = settings?.JsonSerializer ?? new JsonNetSerializer(); this.settings = settings; this.proxy = settings?.Proxy; this.encoder = new JwtEncoder(this.algorithm, serializer, this.urlEncoder); JwtValidator validator = new JwtValidator(serializer, this.datetimeProvider); this.decoder = new JwtDecoder(serializer, validator, this.urlEncoder); this.AppScope = settings?.AppScope ?? AppScope.Autonomous; this.DeviceInfo = settings?.DeviceInfo ?? new DeviceInfo(); }
public void InitializerPropertiesTest() { Mock <IJsonSerializer> mSerializer = new Mock <IJsonSerializer>(); IJsonSerializer serializer = mSerializer.Object; Mock <IDateTimeProvider> mProvider = new Mock <IDateTimeProvider>(); IDateTimeProvider provider = mProvider.Object; Mock <IJwtValidator> mValidator = new Mock <IJwtValidator>(); IJwtValidator validator = mValidator.Object; Mock <IBase64UrlEncoder> mUrlEncoder = new Mock <IBase64UrlEncoder>(); IBase64UrlEncoder urlEncoder = mUrlEncoder.Object; Mock <IJwtDecoder> mDecoder = new Mock <IJwtDecoder>(); IJwtDecoder decoder = mDecoder.Object; Mock <IJwtAlgorithm> mAlgorithm = new Mock <IJwtAlgorithm>(); IJwtAlgorithm algorithm = mAlgorithm.Object; Mock <IJwtEncoder> mEncoder = new Mock <IJwtEncoder>(); IJwtEncoder encoder = mEncoder.Object; Mock <ILoggingService> mLoggingService = new Mock <ILoggingService>(); ILoggingService loggingService = mLoggingService.Object; using (SecureString secret = _secret.ToSecureString()) using (JwtServiceArgs args = new JwtServiceArgs(false, null, null) { Secret = _secret, SecureSecret = secret, Serializer = serializer, Provider = provider, Validator = validator, UrlEncoder = urlEncoder, Decoder = decoder, Algorithm = algorithm, Encoder = encoder, LoggingService = loggingService }) { Assert.Equal(_secret, args.Secret); Assert.Equal(secret, args.SecureSecret); Assert.Equal(_secret, args.SecureSecret.ToPlainText()); Assert.Equal(serializer, args.Serializer); Assert.Equal(provider, args.Provider); Assert.Equal(validator, args.Validator); Assert.Equal(urlEncoder, args.UrlEncoder); Assert.Equal(decoder, args.Decoder); Assert.Equal(algorithm, args.Algorithm); Assert.Equal(encoder, args.Encoder); Assert.Equal(loggingService, args.LoggingService); } }
private void TryCreateEncoder() { if (_algorithm is null && _algFactory is null) { throw new InvalidOperationException($"Can't instantiate {nameof(JwtEncoder)}. Call {nameof(WithAlgorithm)}."); } if (_serializer is null) { throw new InvalidOperationException($"Can't instantiate {nameof(JwtEncoder)}. Call {nameof(WithSerializer)}"); } if (_urlEncoder is null) { throw new InvalidOperationException($"Can't instantiate {nameof(JwtEncoder)}. Call {nameof(WithUrlEncoder)}."); } _encoder = new JwtEncoder(_algorithm, _serializer, _urlEncoder); }