public Task <IBinding> TryCreateAsync(BindingProviderContext context)
        {
            IAccessTokenSettings _accessTokenSettings = new AccessTokenSettings
            {
                PublicKey = Environment.GetEnvironmentVariable($"{nameof(AccessTokenSettings)}:{nameof(IAccessTokenSettings.PublicKey)}"),
                Audience  = Environment.GetEnvironmentVariable($"{nameof(AccessTokenSettings)}:{nameof(IAccessTokenSettings.Audience)}"),
                Issuer    = Environment.GetEnvironmentVariable($"{nameof(AccessTokenSettings)}:{nameof(IAccessTokenSettings.Issuer)}"),
            };

            if (string.IsNullOrWhiteSpace(_accessTokenSettings.PublicKey))
            {
                throw new ArgumentNullException($"{nameof(AccessTokenSettings)}:{nameof(IAccessTokenSettings.PublicKey)} setting is not exist or empty.");
            }

            if (string.IsNullOrWhiteSpace(_accessTokenSettings.Audience))
            {
                throw new ArgumentNullException($"{nameof(AccessTokenSettings)}:{nameof(IAccessTokenSettings.Audience)} setting is not exist or empty.");
            }

            if (string.IsNullOrWhiteSpace(_accessTokenSettings.Issuer))
            {
                throw new ArgumentNullException($"{nameof(AccessTokenSettings)}:{nameof(IAccessTokenSettings.Issuer)} setting is not exist or empty.");
            }

            IBinding binding = new AccessTokenBinding(_accessTokenSettings);

            return(Task.FromResult(binding));
        }
示例#2
0
        public void DecodedAccessTokenShouldBeValid(
            string publicKey,
            string issuer,
            string audience,
            string accessToken,
            string expectedUserId,
            string expectedGivenName,
            string expectedFamilyName)
        {
            var accessTokenSettings = new AccessTokenSettings
            {
                PublicKey = publicKey,
                Issuer    = issuer,
                Audience  = audience
            };

            var AccessTokenProvider = new AccessTokenProvider(accessTokenSettings);

            var httpContext = new DefaultHttpContext();

            httpContext.Request.Headers["Authorization"] = $"Bearer {accessToken}";

            var accessTokenResult = AccessTokenProvider.ValidateToken(httpContext.Request);

            Assert.Equal(AccessTokenStatus.Valid, accessTokenResult.Status);
            Assert.Equal(expectedUserId, accessTokenResult.Principal.GetUserId());
            Assert.Equal(expectedGivenName, accessTokenResult.Principal.GetGivenName());
            Assert.Equal(expectedFamilyName, accessTokenResult.Principal.GetFamilyName());
        }
示例#3
0
 /// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="httpContextAccessor">Default httpContext accessor</param>
 /// <param name="logger">The logger</param>
 /// <param name="accessTokenSettings">The access token settings</param>
 /// <param name="signingKeysResolver">The resolver for signing keys</param>
 public AccessTokenHandler(
     IHttpContextAccessor httpContextAccessor,
     ILogger <AccessTokenHandler> logger,
     IOptions <AccessTokenSettings> accessTokenSettings,
     ISigningKeysResolver signingKeysResolver)
 {
     _httpContextAccessor = httpContextAccessor;
     _logger = logger;
     _accessTokenSettings = accessTokenSettings.Value;
     _signingKeysResolver = signingKeysResolver;
 }
示例#4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AccessTokenProvider"/> class.
 /// </summary>
 /// <param name="keyVaultService">The key vault service.</param>
 /// <param name="accessTokenGenerator">The access token generator.</param>
 /// <param name="accessTokenSettings">The access token settings.</param>
 /// <param name="keyVaultSettings">The key vault settings.</param>
 /// <param name="platformSettings">The platform settings.</param>
 public AccessTokenProvider(
     IKeyVaultService keyVaultService,
     IAccessTokenGenerator accessTokenGenerator,
     IOptions <AccessTokenSettings> accessTokenSettings,
     IOptions <KeyVaultSettings> keyVaultSettings,
     IOptions <PlatformSettings> platformSettings)
 {
     _keyVaultService      = keyVaultService;
     _accessTokenGenerator = accessTokenGenerator;
     _platformSettings     = platformSettings.Value;
     _accessTokenSettings  = accessTokenSettings.Value;
     _keyVaultSettings     = keyVaultSettings.Value;
 }
示例#5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EventsController"/> class
 /// </summary>
 public EventsController(
     IEventsService eventsService,
     IRegisterService registerService,
     IOptions <GeneralSettings> settings,
     ILogger <EventsController> logger,
     IPDP pdp,
     IOptions <AccessTokenSettings> accessTokenSettings)
 {
     _registerService     = registerService;
     _logger              = logger;
     _eventsService       = eventsService;
     _eventsBaseUri       = $"https://platform.{settings.Value.Hostname}";
     _authorizationHelper = new AuthorizationHelper(pdp);
     _accessTokenSettings = accessTokenSettings.Value;
 }
示例#6
0
 public AccountsService(
     UserManager <ApplicationUser> userManager,
     RoleManager <IdentityRole> roleManager,
     IOptions <AccessTokenSettings> accessTokenSettings,
     IOptions <RefreshTokenSettings> refreshTokenSettings,
     IMapper mapper,
     IdentityContext context)
 {
     this._userManager          = userManager;
     this._roleManager          = roleManager;
     this._accessTokenSettings  = accessTokenSettings.Value;
     this._refreshTokenSettings = refreshTokenSettings.Value;
     this._mapper  = mapper;
     this._context = context;
 }
示例#7
0
 /// <summary>
 /// Default constructor.
 /// </summary>
 /// <param name="logger">The logger</param>
 /// <param name="accessTokenSettings">Settings for access token</param>
 /// <param name="signingKeysResolver">The signingkeys resolver</param>
 public AccessTokenGenerator(ILogger <AccessTokenGenerator> logger, IOptions <AccessTokenSettings> accessTokenSettings, ISigningCredentialsResolver signingKeysResolver = null)
 {
     _accessTokenSettings = accessTokenSettings.Value;
     _signingKeysResolver = signingKeysResolver;
     _logger = logger;
 }
 /// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="keyVaultSettings">The keyvault settings</param>
 /// <param name="accessTokenSettings">Settings for access token</param>
 /// <param name="memoryCache">Memory cache</param>
 public SigningKeysResolver(IOptions <KeyVaultSettings> keyVaultSettings, IOptions <AccessTokenSettings> accessTokenSettings, IMemoryCache memoryCache)
 {
     _accessTokenSettings = accessTokenSettings.Value;
     _keyVaultSettings    = keyVaultSettings.Value;
     _memoryCache         = memoryCache;
 }
 /// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="accessTokenSettings">Access token settings</param>
 public SigningCredentialsResolver(IOptions <AccessTokenSettings> accessTokenSettings)
 {
     _accessTokenSettings = accessTokenSettings.Value;
 }