/// <inheritdoc />
 public BearerTokenB2CValueProvider(
     HttpRequest request,
     TokenAzureB2COptions options,
     FunctionTokenAttribute attribute)
     : this(request, options, attribute, new AzureB2CTokensLoader(), new JwtSecurityTokenHandler())
 {
 }
 /// <inheritdoc />
 public BearerTokenB2CValueProvider(
     HttpRequest request,
     TokenAzureB2COptions options,
     FunctionTokenAttribute attribute)
     : base(request, options, attribute)
 {
     this.options = options;
 }
 public BearerTokenB2CValueProvider(
     HttpRequest request,
     TokenAzureB2COptions options,
     FunctionTokenAttribute attribute,
     IAzureB2CTokensLoader loader,
     ISecurityTokenValidator securityHandler)
     : base(request, options, attribute, securityHandler)
 {
     this.options         = options;
     azureB2CTokensLoader = loader;
 }
예제 #4
0
        public void GetValueAsyncWorksForScope(string requiredScope, string[] authorizedRoles, List <Claim> claims, TokenStatus tokenStatus)
        {
            Mock <HttpRequest> request = new Mock <HttpRequest>();

            request
            .SetupGet(r => r.Headers)
            .Returns(new HeaderDictionary {
                { "Authorization", "Bearer abc123" }
            });
            request
            .SetupGet(r => r.HttpContext)
            .Returns(Mock.Of <HttpContext>());
            TokenAzureB2COptions options = new TokenAzureB2COptions {
                AzureB2CSingingKeyUri = new Uri("http://localhost:7001")
            };
            FunctionTokenAttribute attribute = new FunctionTokenAttribute(
                AuthLevel.Authorized,
                requiredScope,
                authorizedRoles
                );
            SecurityToken mockSecurityToken         = Mock.Of <SecurityToken>();
            Mock <IAzureB2CTokensLoader> mockLoader = new Mock <IAzureB2CTokensLoader>();

            mockLoader
            .Setup(l => l.Load(It.IsAny <Uri>()))
            .Returns(Task <List <JsonWebKey> > .Factory.StartNew(o => new List <JsonWebKey>(), null));
            mockLoader
            .Setup(l => l.Reload(It.IsAny <Uri>()))
            .Returns(Task <List <JsonWebKey> > .Factory.StartNew(o => new List <JsonWebKey>(), null));
            Mock <ISecurityTokenValidator> mockSecurityTokenValidator = new Mock <ISecurityTokenValidator>();

            mockSecurityTokenValidator
            .Setup(v => v.ValidateToken(
                       It.IsAny <string>(),
                       It.IsAny <TokenValidationParameters>(),
                       out mockSecurityToken
                       )
                   )
            .Returns(
                new ClaimsPrincipal(
                    new List <ClaimsIdentity> {
                new ClaimsIdentity(
                    claims,
                    "Bearer"
                    )
            })
                );

            BearerTokenB2CValueProvider provider = new BearerTokenB2CValueProvider(
                request.Object,
                options,
                attribute,
                mockLoader.Object,
                mockSecurityTokenValidator.Object
                );

            ((FunctionTokenResult)(provider
                                   .GetValueAsync()
                                   .GetAwaiter()
                                   .GetResult()))
            .Status
            .Should()
            .Be(tokenStatus);
        }